2013-04-29 5 views
5

Stworzyłem aplikację AngularJS z "yo angle", uruchomiłem "pomruk serwera - siła" i dotarłem do "Allo, Allo" ekran powodzenia.Utworzona przez Yeomana aplikacja Angular działa do momentu dodania ['ngResource'], a następnie zawiesza się

Kiedy dodałem ['ngResource'], jak pokazano poniżej, wydaje się, że zawiesił się ... lub przynajmniej nic już nie wyświetla się w przeglądarce.

Próbujemy dodać $ zasób jako parametr do funkcji..i.e. próbował użyć zasobu, ale bez powodzenia. Nie widzę żadnych błędów w konsoli internetowej. Sprawdziliśmy, że plik kątowy-resource.js jest wymieniony w komponentach/zasobach kątowych.

To wydaje się jak błąd głupiego nowicjusza, ale utknęło nam.

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

Czy jesteś pewien, że dodałeś plik angular-resources.js na swojej stronie internetowej (np. Index.html)? – cremersstijn

+0

Tak, jest tam, dziękuję. W rzeczywistości jednym z naszych eksperymentów było wyciągnięcie go (oczekiwany błąd) w celu sprawdzenia, czy poprawnie o to prosiliśmy. –

+0

Jeszcze jedno pytanie, dlaczego używasz ngResource w ten sposób? Myślę, że powinien on być używany z usługami restfull. Zobacz http: //docs.angularjs.org/tutorial/step_11 – cremersstijn

Odpowiedz

6

dostałem odpowiedź (lub przynajmniej zrozumienie) z angularjs książki Zielona & Seshadri użytkownika.

Instrukcja angular.module działa w dwóch trybach: konfiguracja i uruchomienie. Oświadczenie „ngResource” współpracuje z konfiguracją.

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

Works

ale umieścić ten sam oświadczenie w angular.module (...) oświadczenie fabrycznych i nie jest on/spokojnie wisi (bo Fabryce umiejscowionej jest prowadzony zamiast rachunku konfiguracji):

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

jest to wyjaśnione na miejscu 6456 z wersji Kindle z angularjs książki („Ładowanie i zależności” w rozdziale 7). Ma to sens po fakcie (chyba wszystko), ale komunikat o błędzie i/lub zaktualizowana dokumentacja byłaby świetna.

+2

co w końcu robisz, aby to naprawić? – caarlos0

6

Brian, Doświadczyłem tego samego. Moja aplikacja AngJS zawieszałaby się cicho po dodaniu do fabryki ['ngResource'].

naprawiłem ten problem poprzez zmianę tego kodu:

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

do tego:

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

A moja aplikacja nadal pracował w porządku w spożywania API odpoczynek json.

0

Różnica między definiowaniem modułu i jego zależności a tworzeniem nowych komponentów w module.

angular.module ('a3App' [ 'ngResource', 'another.dependency']) config() <. - będzie współpracować z funkcji pierwotnych jak run(), (config) ale pęknie jeśli używasz do wydania dyrektywy/kontrolera/usługi/itp.

angular.module ('a3App'). Factory ('factoryName', function) < --- będzie działać, aby utworzyć komponent, nie potrzebuje ponownie zależności, zostały już zadeklarowane z modułem.