2013-04-09 3 views
21

Haml 뷰가있는 레일 앱이 있습니다. 이제 AngularJS를 응용 프로그램의 일부에 추가하려고하지만 문제는 Haml보기가 서버 쪽에서 렌더링되고 AngularJS 코드가 클라이언트 쪽에서 렌더링되기 때문에 작동하지 않는 점입니다.레일 앱의 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 템플리트로 대체되는 경우를위한 것입니다. AngularJS를 주로 Rails 앱의 작은 기능에 사용하고 싶습니다. 어떤 아이디어가 이것을 해결하는 방법? 내가 조금 여기에 코드를 편집 한

답변

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'}}. 

와 자바 스크립트는 다음과 같습니다

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

감사 작동합니다. 내 각진 앱에 HTML 태그의 이름을 지정하는 실수를했으나 네임 스페이스를 만들지 않았습니다. – John

+8

haml에서 아주 작은 개선점 중 하나는 빈 문자열없이 이 될 % html { "ng-app"=> true} 또는 % html (ng-app = true)를 작성하는 것입니다. –

+1

'htmll 4.0.5' (Rails 4)에서'% html (ng-app)'를 간단하게 사용할 수 있다는 것을 알았습니다. –