2014-11-06 130 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