我用"yo angular"创建了一个AngularJS应用程序,运行"grunt server --force"并进入'Allo,Allo'成功屏幕.
当我添加['ngResource']如下所示时,它似乎挂起......或者浏览器中至少没有显示任何内容.
我们尝试添加$ resource作为函数的参数.我试图实际使用资源但没有运气.我没有在Web控制台中看到任何错误.我们验证了angular-resource.js列在components/angular-resources中.
这感觉就像一个愚蠢的新手错误,但它让我们陷入困境.
'use strict';
angular.module('a3App', ['ngResource'])
.factory('myService', function () {
var foo = 42;
return {
someMethod: function() {
return foo;
}
};
});
从Green&Seshadri的AngularJS书中得到答案(或至少是理解).
angular.module语句有两种工作模式:配置和运行.'ngResource'语句适用于配置:
angular.module('a3App', ['ngResource']).config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
});
作品
但是将相同的语句放在angular.module(...).factory语句中并且它会失败/静默挂起(因为.factory是运行而不是配置语句):
angular.module('a3App', ['ngResource']).factory('myService', function($resource) {
...
这在AngularJS书的Kindle版本的位置6456(第7章中的"加载和依赖")中进行了解释.事实之后它是有意义的(我猜所有的事情都有)..但错误信息和/或更新的文档会很棒.
布赖恩,我经历过同样的事情.每当我加入['ngResource']工厂时,我的AngJS应用程序都会悄然挂起.
我通过更改此代码修复了此问题:
angular.module('a3App', ['ngResource']).factory('myService', function($resource) {
...
Run Code Online (Sandbox Code Playgroud)
进入:
angular.module('a3App').factory('myService', function($resource) {
...
Run Code Online (Sandbox Code Playgroud)
我的应用程序仍然可以正常使用json rest api.