2013-04-09 73 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

相关问题