$ scope无法在$ stateChangeStart上设置属性

时间:2014-08-15 17:42:37

标签: angularjs rootscope

您好我是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变量有一个值,代码可以工作,只是我得到这个错误信息。关于如何解决这个错误的任何想法?

由于

2 个答案:

答案 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上设置您的属性,如果您的范围未被隔离,则可以从子范围访问它。