2013-04-29 3 views
5

Я создал приложение AngularJS с «yo angular», запустил «grunt server -force» и добрался до «Allo, Allo», успех экран.A Yeoman generated Angular app works fine til Я добавляю ['ngResource'], а затем он висит

Когда я добавил ['ngResource'], как показано ниже, он кажется зависающим ... или по крайней мере в браузере больше не отображается.

Мы попробуем добавить $ resource в качестве параметра для функции..i.e. пытался использовать ресурс, но не повезло. Я не вижу ошибок в веб-консоли. Мы проверили, что angular-resource.js указан в компонентах/угловых ресурсах.

Это похоже на тупая новичка, но ее застряли.

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

Вы уверены, что вы добавили файл angular-resources.js на свою веб-страницу (например, index.html)? – cremersstijn

+0

Да, его там, спасибо. На самом деле один из наших экспериментов заключался в том, чтобы вытащить его (получив ожидаемую ошибку), чтобы убедиться, что мы правильно его просим. –

+0

Еще один вопрос, почему вы используете ngResource таким образом? Я думаю, он должен использоваться с restfull-сервисами. См. Http: //docs.angularjs.org/tutorial/step_11 – cremersstijn

ответ

6

Получил ответ (или, по крайней мере, понимание) из AngularJS книги Green & Сешадри.

Оператор angular.module работает в двух режимах: конфигурация и запуск. Заявление 'ngResource' отлично работает с конфигурацией:.

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

Works

но поставить этот же оператор в angular.module (...) фабричного заявление и оно не/спокойно висит (потому что .factory является прогон, а не утверждение конфигурации):

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

Это объясняется на месте 6456 версии Kindle книги AngularJS («Загрузка и зависимости» в главе 7). Это имеет смысл после факта (я предполагаю, что все это делает) .. но сообщение об ошибке и/или обновленная документация были бы замечательными.

+2

Что вы делаете, чтобы исправить это? – caarlos0

6

Brian, Я испытал то же самое. Мое приложение AngJS будет спокойно висеть, когда я включу ['ngResource'] на заводе.

Я исправил эту проблему, изменив этот код:

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

в этом:

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

И мое приложение по-прежнему работал хорошо в потребляющих JSON REST API.

0

Разница между определением модуля и его зависимостями и созданием новых компонентов в модуле.

angular.module ('a3App', ['ngResource', 'another.dependency']). Config() < - будет работать с начальными функциями, такими как run(), config(), но будет разбит, если вы используете это сделать директиву/контроллер/сервис/и т. д.

angular.module ('a3App'). Factory ('factoryName', function) < --- будет работать, чтобы создать компонент, не нуждается в зависимостях, они уже были объявлены вместе с модулем.