我有两条决心路线。是这样的:
.when('/foos', {
templateUrl: 'views/foos.html',
controller: 'FoosCtrl',
resolve: {
foo_list: ['$q', '$route', '$timeout', '$location', 'Foos', function($q, $route, $timeout, $location, Foos) {
// postpone the execution
var deferred_foo = $q.defer()
Foos.getFoos({token:session_uid}, successCb)
function successCb(list) {
if(list['status'] === 200) {
deferred_foo.resolve(list)
}
else {
alert('Crashcrashcrash')
deferred_foo.reject("Something just wasn't right")
//$location.path('maintenance')
}
}
return deferred_foo.promise
}]
}
})
.when('/r/:type/:bar_id', {
templateUrl: 'views/bar.html',
controller: 'BarsCtrl',
resolve: {
bar: ['$q', '$route', '$timeout', '$location', 'Bars', function($q, $route, $timeout, $location, Bars) {
// postpone the execution
var deferred = $q.defer()
Bars.getBar({type: bar_type}, successCb)
function successCb(result) {
if(result['status'] === 200) {
deferred.resolve(result)
}
else {
alert('Crashcrashcrash')
deferred.reject("Something just wasn't right")
$location.path('foos')
}
return deferred.promise
}]
}
})
然后我有两个 Controller 像这样工作:
App.controller('FoosCtrl', ['$scope', '$location', 'Foos', 'foo_list', function($scope, $location, Foos, foo_list) {...}
App.controller('BarsCtrl', ['$scope', '$routeParams', '$location', 'Bars', 'bar', 'sharedService', function($scope, $routeParams, $location, Bars, bar, sharedService) {...}
有人可以解释一下为什么 Bar 有效但 Foo 给了我 Error: Unknown provider: foo_listProvider <- foo_list
?我尝试更换 foo_list
使用不同的名称,以防camelCasing做了一些事情但没有帮助。
最佳答案
所以,这个问题与我自己的问题惊人地相似,我刚刚在 Angular IRC channel 的人们的帮助下发现了这个问题......你是否偶然设置了你的 Controller ng-controller
?我有:
<div ng-controller="myCtrl">
...当它应该被删除时:
<div>
...因为我在路由器上的解析中设置 Controller 。这就是我正在做的事情,也是造成这个问题的原因。您可以在这里查看更多内容:
关于AngularJS,解析和未知提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14846466/