$rootScope变量在状态转换后未保存


.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对象同时包含activeAddressactiveRestaurant对象,当我专门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

最新更新