您好我是angularjs的新手,我正在使用$ rootScope更改$ stateChangeSuccess上的$ scope变量。问题是,我收到一条错误消息,上面写着“TypeError:无法设置属性'show'为null”。这是我的代码的狙击手
// unhide this view whenever visited
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
$scope.$parent.show = false;
alert($scope.$parent.show);
return $scope.$parent.show;
});
和html ......
<div class="row">
<div class="dl-horizontal" id="information">
<div class="col-md-8 col-md-offset-2">
<!-- route veiw, hide the child view initailly -->
<div ui-view ></div>
</div>
<div class="col-md-8 col-md-offset-2" ng-hide="show">
基本上,每当我离开子状态时,我想取消隐藏父视图。 $ scope变量有一个值,代码可以工作,只是我得到这个错误信息。关于如何解决这个错误的任何想法?
由于
答案 0 :(得分:1)
如果要避免使用根作用域,可以将$ on添加到包含要更改的属性的$作用域。
例如:
controller: function($scope, $stateParams, carsDataService) {
$scope.model = {};
$scope.model.cars = carsDataService.getCars();
$scope.pageState = { selectedCarId: null };
$scope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
$scope.pageState.selectedCarId = toParams.id;
});
}
答案 1 :(得分:0)
您无法访问$rootScope
的侦听器内的子范围。
只需在$rootScope
上设置您的属性,如果您的范围未被隔离,则可以从子范围访问它。