2015-02-23 98 views
2

我想使用的用戶界面路由器決心抓住一些數據在控制器中使用:角UIRouter決心未知提供商

$stateProvider 
    .state('home', { 
    url: '/', 
    templateUrl: 'templates/home.html', 
    controller: 'homeCtrl', 
    resolve: {       
     friends: ['$http', function($http) { 
      return $http.get('api/friends.json').then(function(response) { 
        return response.data; 
      }) 
     }] 
    } 
}) 

這裏是控制器:

angular.module('app').controller('homeCtrl', ['friends', function(friends) { 
     this.friends = friends; 
    }]); 

HTML:

<section ng-controller="homeCtrl as home"> 
    <ul> 
     <li ng-repeat="friend in home.friends"> 
      {{friend.name}} : {{friend.age}} 
     </li> 
    </ul> 
</section> 

我該如何得到這個工作?我得到的error告訴我定義服務。不太確定該怎麼做。 另外,我知道我可以通過注入$ scope來獲得它的工作。我希望避免這種情況,因爲我正試圖在這裏學習新的東西。

+0

你檢查什麼是您的服務器返回? – levi 2015-02-23 03:23:38

+0

你有導入'ui.router'模塊嗎? – 2015-02-23 03:26:16

+0

是的,我輸入了ui.router。服務器返回數據。就像我上面所說的,如果我注入$ scope,一切都很好 – davidpm4 2015-02-23 03:39:57

回答

6

您已經包含控制器兩次。一旦進入HTML,並且一次進入UI路由器。因此,你實際上得到了控制器的兩個實例。

解決方法:卸下控制器從HTML包括,並且將其添加到UI路由器$ stateProvider:

controllerAs: 'home'