当我从视图中删除ng-controller时,resolve属性工作得很好但是当我把ng-controller放在模板中时,它会抛出未知的provider.can任何正文帮助我解释为什么会发生这种情况?
app.config(['$routeProvider',function($routeProvider) {
$routeProvider.
when('/', {
templateUrl: 'page/login.html',
controller: 'loginController',
resolve: {
message: function(demoService){
return demoService.getResolveContent();
},
greeting: function(demoFactory){
return demoFactory.getGreeting();
}
}
}).
when('/profile', {
templateUrl: 'page/profile.html',
controller: 'profileController'
})
.otherwise({
redirectTo: '/'
});
}]);
函数loginController($ scope,$ location,message,greeting){
$scope.tempfactory = greeting; }
<div style="color: white;width: 100%;height: 100%;background-color: lightgray" ng-controller="loginController">
<p>{{tempfactory}}</p>
<input type="text" ng-model="inputBoxValue">
<button style="width: 100px;height: 100px" ng-click="profilePage()"></button>
</div>
如果我用以下内容替换上面的html:
<div style="color: white;width: 100%;height: 100%;background-color: lightgray" >
<p>{{tempfactory}}</p>
<input type="text" ng-model="inputBoxValue">
<button style="width: 100px;height: 100px" ng-click="profilePage()"></button>
</div>
它工作得非常好。任何人都告诉我这个原因。
答案 0 :(得分:2)
使用resolve
添加的依赖项将作为正在解析的路由和创建控制器的一部分注入,否则无法使用。这些不是全局依赖项,如service
或filter
。
如果使用ng-controller
,则不会发生路由转换,并且不会发生与路由相关的依赖关系解析和控制器创建,并且会引发DI错误。
如果您将控制器置于路由定义中并使用ng-controller
,则会创建两个控制器实例,但会出现DI错误。