.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>
这是因为 Angular 加载 A-sync,控制器在 rootScope 之前加载。尝试查看 defer() 和 promise 与 $q