將注入服務注入子態解析函數時未知提供程序。但是如果在父母狀態中定義了一個決心,它就會起作用。下面有一些示例代碼:UI路由器將注入服務注入子狀態解析函數的未知提供程序
我定義的服務模塊
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決心爲myService。但是,如果我在父狀態中添加隨機解析,如
$stateProvider.state('wizard', {
url: '/wizard',
abstract: true,
resolve: {
a: function() { return 1; }
}
})
那麼它的工作原理沒有錯誤。不知道發生了什麼?
我看不出有什麼問題。如果您創建了一個顯示問題的小提琴,我會試一試。 – 2014-10-01 07:47:46
同意@StephenFriedrich,這看起來很好。我把它放在一個plunk中:http://plnkr.co/edit/McZ97tJIuSIQnwRkDb8c?p = preview – 2014-10-01 17:52:50
難道你會在部分HTML文件中留下ng控制器嗎?如果是這樣,angular將嘗試在加載視圖時實例化控制器,此時'name'不會存在,所以你會得到錯誤。看到我對這個問題的答案:http://stackoverflow.com/questions/27023887/angularfire-0-9-resolve-with-ui-router – andyhasit 2015-01-16 01:06:17