2013-04-29 6 views
5

Ich erstellte eine AngularJS App mit "yo eckig", lief "grunt server --force" und bekam die "Allo, Allo" Erfolgsbildschirm.Ein Yeoman generierte Angular App funktioniert gut, bis ich ['ngResource'] und dann hängt es

Wenn ich ['ngResource'] wie unten gezeigt hinzugefügt habe, scheint es zu hängen ... oder zumindest wird nichts mehr im Browser angezeigt.

Wir versuchen, $ Ressource als Parameter zu Funktion..i.e hinzuzufügen. versuchte tatsächlich eine Ressource zu verwenden, aber kein Glück. Ich sehe keine Fehler in der Webkonsole. Wir haben überprüft, dass angular-resource.js in Komponenten/angular-resources aufgelistet ist.

Das fühlt sich wie ein dummer Neuling Fehler, aber es hat uns stecken.

 
'use strict'; 
angular.module('a3App', ['ngResource']) 
    .factory('myService', function() { 
    var foo = 42; 
    return { 
    someMethod: function() { 
     return foo; 
    } 
    }; 
}); 
+0

Sind Sie sicher, dass Sie die Datei angular-resources.js auf Ihrer Webseite hinzugefügt haben (wie index.html)? – cremersstijn

+0

Ja, es ist da, danke. In der Tat war eines unserer Experimente, es herauszunehmen (erwarteter Fehler), um zu verifizieren, dass wir richtig danach gefragt haben. –

+0

Nur eine andere Frage, warum verwenden Sie ngResource auf diese Weise? Ich denke, es sollte mit erholsamen Diensten verwendet werden. Siehe http://docs.angularjs.org/tutorial/step_11 – cremersstijn

Antwort

6

Haben Sie die Antwort (oder zumindest das Verständnis) von Green & AngularJS Buch Seshadri.

Die Anweisung angle.module funktioniert in zwei Modi: Konfiguration und Ausführung. Die 'ngResource' Anweisung funktioniert mit Konfiguration:.

 
angular.module('a3App', ['ngResource']).config(function ($routeProvider) { 
    $routeProvider 
    .when('/', { 
    templateUrl: 'views/main.html', 
    controller: 'MainCtrl' 
    }) 
    .otherwise({ 
    redirectTo: '/' 
    }); 
}); 

Works

aber setzen die gleiche Aussage in einer angular.module (...) Werk Aussage und es scheitert/leise hängt (weil .factory Nach einem eher als Konfigurationsanweisung):

 
angular.module('a3App', ['ngResource']).factory('myService', function($resource) { 
... 

Dies wird an der Stelle 6456 der Kindle-Version des AngularJS Buchs („Laden und Abhängigkeiten“ in Kapitel 7) erläutert. Es macht Sinn nach der Tatsache (ich denke, alle Dinge tun) .. aber eine Fehlermeldung und/oder aktualisierte Dokumentation wäre großartig.

+2

was Sie tun, um es zu beheben? – caarlos0

6

Brian, Ich erlebte das gleiche. Meine AngJS App würde ruhig hängen, wenn ich ['ngResource'] in einer Fabrik einfügte.

Ich reparierte dieses Problem durch diesen Code zu ändern:

angular.module('a3App', ['ngResource']).factory('myService', function($resource) { 
... 

In diese:

angular.module('a3App').factory('myService', function($resource) { 
... 

Und meine Anwendung funktioniert immer noch gut eine json Rest api in raubend.

0

Der Unterschied zwischen dem Definieren eines Moduls und seinen Abhängigkeiten und dem Erstellen neuer Komponenten im Modul.

angular.module ('a3App', ['ngResource', 'another.dependency']). Config() < - funktioniert mit den Anfangsfunktionen wie run(), config(), bricht aber, wenn Sie verwenden um eine Richtlinie/Controller/Service/etc.

angular.Module ('a3App'). Factory ('factoryName', Funktion) < --- funktioniert, um die Komponente zu erstellen, benötigt keine Abhängigkeiten mehr, sie wurden bereits mit dem Modul deklariert.

Verwandte Themen