一个Yeoman生成的Angular应用程序工作正常,直到我添加['ngResource']然后它挂起

Bri*_*box 5 angularjs yeoman

我用"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;
    }
   };
});

Bri*_*box 6

从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章中的"加载和依赖")中进行了解释.事实之后它是有意义的(我猜所有的事情都有)..但错误信息和/或更新的文档会很棒.

  • 你最终要做些什么来修复它? (2认同)

Kur*_*ler 6

布赖恩,我经历过同样的事情.每当我加入['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.