2014-11-06 56 views
0

当我从视图中删除ng-controller时,resolve属性工作得很好,但是当我将ng-controller放在模板中时,它会抛出未知的provider.can任何身体帮助我为什么出现这种情况?Angular js: - > angular angular throws unknown provider error while while access resolve proprerty

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.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> 

它的工作非常好。任何机构都会告诉我这是一个好消息这个。

回答

2

使用resolve添加的依赖项被注入为正在解析的路由的一部分,并且正在创建控制器,否则不可用。这些不是像servicefilter这样的全球依赖关系。

如果使用ng-controller,则不会发生路由转换,并且不会发生与路由相关的依赖关系解析和控制器创建,并且会引发DI错误。

如果您将控制器放在路由定义中并使用ng-controller,则会创建两个控制器实例,但会出现一个DI错误。

+0

谢谢你了。 :) – 2014-11-06 10:16:02

+0

谢谢你,这真的帮助我理解为什么我的动态创建的控制器返回未解析的DI,我通过创建一个不依赖于解析提供程序的子/不同控制器来解决它 – syarul 2014-11-27 05:49:12