.controller('FrameCtrl', ['$scope','$state','$rootScope', '$stateParams',
function($scope, $state, $rootScope, $stateParams) {
console.log($rootScope); // all the data is there.
console.log($rootScope.activeAddress); // undefined
console.log($rootScope.activeRestaurant); // undefined
}])
我试图理解为什么,即使$ rootScope对象同时拥有activeAddress
和activeRestaurant
对象,当我console.log()
具体时它们也是空的。
在上一个状态的控制器中,我使用这两行代码设置这两个对象,如果这有所不同:
// Parse.com promise returns array of addresses after login.
$rootScope.activeAddress = data.addresses[0];
// After getting restaurant ID from activeAddress, copy object to activeRestaurant
$rootScope.activeRestaurant = $rootScope.aRestaurant;
简而言之,我想知道为什么$rootScope.activeAddress
和$rootScope.activeRestaurant
返回undefined,即使它们出现在$ rootScope父对象中。
修改 以下是上一个州HTML页面的标记:
<button class="button button-block button-positive" ng-click="login()"
ui-sref="frame.menu({menu: 'appetizers'})">
LOG IN
</button>
答案 0 :(得分:1)
这是因为Angular加载A-sync并且控制器在rootScope之前加载。尝试使用$ q
查看defer()和promise