2013-04-09 74 views
21

我有一個Haml視圖的Rails應用程序。現在我想將AngularJS添加到應用程序的某些部分,但問題是Haml視圖呈現在服務器端,AngularJS代碼無法正常工作,因爲它呈現在客戶端。在Rails應用程序的Haml視圖中使用AngularJS

比方說,我剛纔這在我的index.html.haml:

!!! 
%html{"ng-app" => "Test"} 
    %head 
    %script{:src => "http://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.js"} 
    :javascript 
     function Clock($scope) { 
     $scope.currentTime = new Date(); 
     } 
    %title Welcome to AngularJS 
    %body 
    %h1 Hello, World. 
    %p{"ng-controller" => "Clock"} 
     The current time is {{currentTime | date:'h:mm:ss a'}}. 

所以目前,它只是打印出來的花括號內的所有內容,而不實際處理它。有解決方案,但它們適用於您的完整視圖被AngularJS模板所取代的情況。我想在我的Rails應用程序中主要使用AngularJS來實現小功能。任何想法如何解決這個問題?

回答

23

約翰,

我編輯了自己的代碼位的位置:http://codepen.io/anon/pen/vKiwH

%html{"ng-app"=>true} 
%p{"ng-controller" => "clock"} 
    The current time is {{currentTime | date:'h:mm:ss a'}}. 

和JavaScript是:

function clock($scope) { 
    $scope.currentTime = new Date().getTime(); 
} 
+0

謝謝,這工作。我犯了一個錯誤,讓我的角應用程序在het html標籤中的名稱,但沒有創建命名空間。 – John 2013-04-09 08:30:03

+8

對haml的一個非常小的改進是編寫%html {「ng-app」=> true}或%html(ng-app = true),兩者都會導致沒有空字符串。 – 2013-07-30 18:29:19

+1

用'haml 4.0.5'(在Rails 4下)我發現我可以簡單地去'%html(ng-app)'。 – 2014-07-05 00:23:50

相關問題