2013-04-09 4 views
21

Ich habe eine Rails App mit Haml Ansichten. Jetzt möchte ich AngularJS zu einigen Teilen der Anwendung hinzufügen, aber das Problem ist, dass die Haml-Ansichten serverseitig gerendert werden und der AngularJS-Code nicht funktioniert, da er auf der Client-Seite gerendert wird.Mit AngularJS in Haml Ansichten einer Rails App

Lassen Sie uns sagen, ich habe gerade in meinem 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'}}. 

Also zur Zeit, es ist nur ohne es tatsächlich die Verarbeitung innerhalb der geschweiften Klammern alles ausdrucken. Es gibt Lösungen, aber für Situationen, in denen Ihre vollständige Ansicht durch eine AngularJS-Vorlage ersetzt wird. Ich möchte AngularJS hauptsächlich für kleine Funktionen in meiner Rails App verwenden. Irgendwelche Ideen, wie man das löst?

Antwort

23

John,

ich Ihren Code ein bisschen hier bearbeitet haben: http://codepen.io/anon/pen/vKiwH

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

und die Javascript ist:

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

Danke, das funktioniert. Ich habe einen Fehler gemacht, um meiner eckigen App einen Namen im HTML-Tag zu geben, aber ich habe den Namespace nicht erstellt. – John

+8

Eine sehr geringfügige Verbesserung gegenüber dem Haml ist das Schreiben von% html {"ng-app" => true} oder% html (ng-app = true), die beide in ohne den leeren String resultieren. –

+1

Mit 'haml 4.0.5' (unter Rails 4) habe ich festgestellt, dass ich einfach'% html (ng-app) 'gehen kann. –

Verwandte Themen