2013-04-09 7 views
21

Mam aplikację Rails z widokami Haml. Teraz chcę dodać AngularJS do niektórych części aplikacji, ale problem polega na tym, że widoki Haml są renderowane po stronie serwera, a kod AngularJS nie działa, ponieważ jest renderowany po stronie klienta.Używanie AngularJS w widokach Haml aplikacji Railsy

Powiedzmy, że właśnie to w moim 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'}}. 

więc obecnie, to tylko drukowanie wszystko wewnątrz nawiasów klamrowych bez faktycznie przetwarzanie. Istnieją rozwiązania, ale w sytuacjach, w których cały widok jest zastępowany szablonem AngularJS. Chcę używać AngularJS głównie dla małych bitów funkcjonalności w mojej aplikacji Rails. Wszelkie pomysły, jak to rozwiązać?

Odpowiedz

23

John

Mam edytowany kod nieco tutaj: http://codepen.io/anon/pen/vKiwH

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

i JavaScript jest:

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

Dzięki, że działa. Popełniłem błąd, nadając mojej kanciastej aplikacji nazwę w tagu HTML het, ale nie utworzyłem przestrzeni nazw. – John

+8

Jedną z bardzo niewielkich poprawek w Haml jest napisanie% html {"ng-app" => true} lub% html (ng-app = true), z których oba będą skutkować bez pustego łańcucha. –

+1

Z 'haml 4.0.5' (pod Rails 4) stwierdziłem, że mogę po prostu przejść'% html (ng-app) '. –