Ich verwende AngularJS in einem Ruby on Rails 3.2.8 Projekt mit Assets.
Wenn ich mein Formular, das AngularJS auf meinem Entwicklungscomputer verwendet, auflade, habe ich kein Problem. Wenn ich jedoch dasselbe Formular auf meinem Produktionsserver lade, erhalte ich diesen Fehler in der Javascript-Konsole:
%Vor%Ich habe es in meine coffeescript-Datei zurückverfolgt, wo ich AngularJS für die Verwendung in einem Formular eingerichtet habe:
%Vor%Wenn ich das alles ausdekomme, wird die Seite ohne Fehler und ohne AngularJS-Fähigkeiten geladen.
Liegt das Problem daran, dass Rails-Ressourcen kompiliert und minimiert werden? Gibt es eine Möglichkeit, dies zu beheben und trotzdem Coffeescript und Rails-Assets zu verwenden?
AngularJS verwendet, wenn Sie den gerade verwendeten Stil (Pretotyping genannt) verwenden, die Funktionsargumentnamen, um die Abhängigkeitsinjektion durchzuführen. Also ja, Minification bricht das komplett.
Die Lösung ist jedoch einfach. Verwenden Sie in jedem Fall, in dem Sie eine Injektion benötigen (verwenden Sie $ xxx), Folgendes:
%Vor% Ersetzen Sie im Grunde alle Funktionsdefinitionen durch ein Array. Das letzte Element sollte die Funktionsdefinition selbst sein, und die ersten sind die $names
der Objekte, die Sie injizieren möchten.
Es gibt noch mehr (wenn auch nicht eindeutige) Informationen über die Dokumentation .
Wenn Sie die Array-Notation irgendwo vermissen, müssen wir, um dies zu finden, den Winkelcode etwas ändern, aber es ist eine sehr schnelle Lösung.
change ist console.log ("Array-Notation fehlt", fn); (Zeile Nr. 11 von Funktionsstart)
Finden Sie die Annotate-Funktion in angular.js (nicht-minimiert)
%Vor%Tags und Links ruby-on-rails-3 angularjs ruby-on-rails coffeescript