2013-10-27 29 views
1

我正面臨一個問題。我正在使用角度1.2RC3和UI路由0.2。 如果我解決一個正在做一個同步返回的函數,它的工作原理。 有了承諾,控制器在解決承諾之前被初始化。承諾在控制器注入時未得到解決

http://plnkr.co/edit/feXHNaGsXwpXDBXkxLZx

angular.module('srcApp', ['ui.router']) 
    .config(function ($stateProvider, $urlRouterProvider) { 

     $urlRouterProvider.otherwise('/'); 

     var userResult = { 
      id : 'userid', 
      displayName : 'displayName' 
     }; 

     var getUserPromise = function ($q, $timeout, $log) { 

      var defer = $q.defer; 
      $timeout(function() { 
       $log.log('promise resolved'); 
       defer.resolve(userResult); 
      }, 2000); 
      return defer.promise; 
     }; 

     $stateProvider.state('test', { 
      url: '/', 
      template: '<div>{{user.displayName}}</div>', 
      controller: 'testCtrl', 
      resolve : { 
       user: getUserPromise 
      } 
     }); 
    }); 


    var testCtrl = angular.module('srcApp').controller('testCtrl', function ($scope, $http, $log, user) { 
     $log.log("test controller init"); 
     $log.log("test controller user=" + user); 
     $scope.user = user; 
    }); 

回答