我有一个服务功能,每次访问或刷新路线时都需要调用它。该函数返回一个 Angular 承诺。每次调用函数时,都需要将 promise 的结果加载到控制器的作用域中。
我目前正在状态定义上使用解析参数来调用该函数。
.state('app.theState', {
url: '/theRoute/:theRouteId',
views: {
'menuContent': {
templateUrl: 'templates/theRoute.html',
controller: 'TheRouteCtrl'
}
},
resolve: {theResolvedResult: function(theService){
return theService.theAsyncCall().then(function(result){
return result;
},function(errMsg){
return errMsg;
});}
})
数据作为参数传递给控制器。
.controller( 'TheRouteCtrl', function($scope, $state, $log, theResolvedResult)
我正在更新控制器 $scope 在全局的监视中,它保存了 ResolvedResult。(使用本文末尾描述的解决方法)。我尝试观察论点本身,但它从未被触发。
$scope.$state=$state;
$scope.$watch('$state.$current.locals.globals.theResolvedResult', function (result) {
$scope.aValue = result.aValue;
});
不幸的是,我猜因为手表是全局的,当任何路线运行时都会触发手表,并且所有其他路线都会为每条路线抛出错误,除了定义解析的路线。
ionic.bundle.js:26794 TypeError: Cannot read property 'aValue' of undefined
at route_ctrl.js:234
我该如何解决这些错误,或者有更好的方法吗?