angularjs - 第一个服务总是以未知的形式出现

标签 angularjs ionic-framework

无论哪个工厂首先列出,总是会出现此错误:

Uncaught Error: [$injector:unpr] Unknown provider: SocketProvider <- Socket

位于ionic.bundle.js:13380

Error: [$injector:unpr] Unknown provider: CommandsProvider <- Commands <- Command

位于ionic.bundle.js:25642

如果像初学者那样将其放入一个文件中,它们可以正常工作,但该组织很糟糕,这就是我对常规 Angular 应用程序的做法。

索引:

<script src="app.js"></script>
<script src="services/socket.service.js"></script>
<script src="services/commands.service.js"></script>
<script src="controllers/connect.controller.js"></script>
<script src="controllers/command.controller.js"></script>

服务结构:

socket.service.js

(function(){
  'use strict';

  angular.module('tacoCorp.services', [])
    .factory('Socket', Socket);

  Socket.$inject = ['socketFactory'];

  function Socket(socketFactory) {
    // do factory stuff
  }
}());

commands.service.js

(function(){
  'use strict';

  angular.module('tacoCorp.services', [])
    .factory('Commands', Commands);

  Commands.$inject = [];

  function Commands() {
    // more factory stuff
  }
}());

Controller 结构:

(function (){
  'use strict';

  angular.module('tacoCorp.controllers')
    .controller('Command', Command);

  Command.$inject = ['$scope', 'Socket', 'Commands'];

  function Command($scope, Socket, Commands) {
    // controller jamz  
  }

})();

最佳答案

您实际上定义了模块'tacaCorp.services'两次,这就是第一个模块被覆盖的原因......

您应该在另一个文件中编写模块定义,然后在 services js 文件中获取它...

(function(){
  'use strict';

  angular.module('tacoCorp.services', []);

}());

如您所见,我们定义了没有依赖关系的模块。接下来获取模块并在其上添加您的服务。

(function(){
  'use strict';

  angular.module('tacoCorp.services')
    .factory('Commands', Commands);

  Commands.$inject = [];

  function Commands() {
    // more factory stuff
  }
}());

正如您所见,获取模块时,您只需调用 angular.module('tacoCorp.services') ,如果您添加第二个参数,然后设置它而不是获取它,这实际上是你的错误。

关于angularjs - 第一个服务总是以未知的形式出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35021825/

相关文章:

html - CSS padding top div 修改下面的div

android - 使用 Ionic、SQLite 返回多个数据

ios - "ionic cordova platform add ios"无法获取平台 cordova-ios@0.0.1

android - 使用 cordova 插件初始化 Android In App Billing

angularjs - Angular $rootScope.$broadcast() 事件在 Controller 中被捕获两次

javascript - AngularJS 和 Javascript 大数据循环性能

angular - 导航到另一个页面后, ionic 组件不会被销毁

javascript - Angular JS - Controller 在 ngRoute 时不起作用

javascript - ionic 部署上未加载插件

angularjs - 循环到 angularjs 中的数字