angularjs - 用于将服务注入(inject)子状态解析的 UI 路由器未知提供程序

标签 angularjs angular-ui-router

将服务注入(inject)子状态解析函数时出现未知提供者。但是如果在父状态中定义了一个解析,它就可以工作。下面是一些示例代码:

我定义了一个服务模块

angular.module('services', [])
  .factory('myService', function() {
    // my service here
  })

并初始化应用程序
var app = angular.module('app', ['services', 'ui.router']);
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, 

    $urlRouterProvider) {
      $stateProvider.state('wizard', {
        url: '/wizard',
        abstract: true
      })
      .state('wizard.step1', {
        url: '/step1',
        templateUrl: ... ,
        resolve: {
          name: function(myService) {
            // do something with mySerice
          }
        },
        controller: function(name) {
          // controller codes here
        }
      })
    }]);

我在wizard.step1 解决中收到错误Unknown provider 提示myService。但是如果我在父状态中添加一个随机解析,比如
$stateProvider.state('wizard', {
            url: '/wizard',
            abstract: true,
            resolve: {
              a: function() { return 1; }
            }
          })

然后它可以正常工作。想知道这里发生了什么?

最佳答案

在你的 Controller 中,你必须注入(inject)你的服务 MyService,所以定义这样的东西

  .state('wizard.step1', {
    url: '/step1',
    templateUrl: ... ,
    resolve: {
      name: ['myService', function(myService) {
        // do something with mySerice
      }]
    },
    controller: ['name', function(name) {
      // controller codes here
    }]
  })

关于angularjs - 用于将服务注入(inject)子状态解析的 UI 路由器未知提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26136225/

相关文章:

javascript - Highcharts 错误 #13 和 AngularJs

javascript - js 文件声明中的 AngularJS 过滤器

angularjs - 从 ngRoute/$routeProvider 迁移到 ui-router/$urlRouterProvider

php - $stateChangeStart 在从 Rest API 获取数据之前运行

html - 主 css 搞砸了 bootstrap css

javascript - Angular 单元测试服务元素持久性

angularjs - AngularJS 中使用 ui-router 嵌套参数化路由

javascript - AngularJS $state.go 传递的参数始终为空值

javascript - Angular ui 路由器 : Change state on double click

angularjs - 文本区域高度不会随预填充文本而改变