2013-10-10 33 views
0

AngulaR resolve API

的API爲表示決心:

key – {string}: a name of a dependency to be injected into the controller.

@egghead,有這個視頻的題目

egghead - Angular resolve

什麼,我不知道是什麼,關鍵對象是爲和爲什麼上述視頻的作者確實將控制器注入自身

回答

2

key – {string}: a name of a dependency to be injected into the controller.

app.config(function($routeProvider) { 
    $routeProvider. 
     when('/', { 
     controller: 'ListCtrl', 
     resolve: { 
      myResolve: function(MyService) { 
      return MyService(); 
      } 
     }, 
     templateUrl:'./views/list.html' 
    }) 
}); 

代替(控制器)

app.controller('MyController',function($scope,MyService){ 
    $scope.data = MyService();  
}); 

,如果你使用的決心

app.controller('MyController',function($scope,myResolve){ 
    $scope.data = myResolve;  
}); 

UPDATE

工作的例子

<!doctype html> 
<html ng-app="myModule"> 
    <head> 
     <meta charset="utf-8"> 

    </head> 
    <body> 
     <div id="content" data-ng-view=""></div> 
     <script src="http://code.angularjs.org/1.0.8/angular.min.js"></script> 
     <script> 
      var myModule = angular.module('myModule', []); 
      myModule.config(function ($routeProvider) { 
       $routeProvider 
        .when('/', { 
         templateUrl: './index.html', 
         controller: 'IndexCtrl', 
         resolve: { 
          hello: function(Hello) { 
           return Hello.getMessages(); 
          } 
         } 
        }) 
        .otherwise({ 
         redirectTo: '/' 
       }); 

      }); 
      myModule.factory('Hello', function($q, $timeout) { 
       var getMessages = function() { 
        var deferred = $q.defer(); 
        $timeout(function() { 
         deferred.resolve('Hello'); 

        }, 1000); 

        return deferred.promise; 
       }; 
       return { 
        getMessages: getMessages 
       }; 
      }); 
      myModule.controller('IndexCtrl',function($scope,hello){ 
       $scope.hello = hello; 
      }); 
     </script> 
    </body> 
</html> 

認爲

<p>{{hello}}</p> 
+0

對不起,但如果我這樣做,我得到'錯誤:未知提供商:myResolveProvider < - myResolve' – user2422960

+0

後更多的代碼,請(服務應該返回在任何情況下諾言)和整體你應該有服務:) – Whisher

+0

在我的回覆我發佈了一個工作的例子 – Whisher