Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular.js ng if指令在控制器之间不更新_Javascript_Angularjs - Fatal编程技术网

Javascript Angular.js ng if指令在控制器之间不更新

Javascript Angular.js ng if指令在控制器之间不更新,javascript,angularjs,Javascript,Angularjs,我有一个指令,它是根据绑定到侧面板主页中的对象属性显示的。和ng view指令,它根据散列路由加载不同的内容。它看起来像这样。根作用域位于标记上,是主控制器 <body ng-controller="Main"> <auth-panel ng-show="viewModel.panels.auth"></auth-panel> <ng-view></ng-view> </body> 当im在主页中时,此

我有一个指令,它是根据绑定到侧面板主页中的对象属性显示的。和ng view指令,它根据散列路由加载不同的内容。它看起来像这样。根作用域位于标记上,是主控制器

<body ng-controller="Main">
     <auth-panel ng-show="viewModel.panels.auth"></auth-panel>
     <ng-view></ng-view>
</body>
当im在主页中时,此属性为false。 当我移动到下一页“PeoplePlaces”时,它使用ng if和truthy值显示。但由于某种原因,当我使用browsers back事件导航回时,我可以通过调试看到主控制器正在运行,并且该值设置为false,但是ng if指令不会更新,并且指令“auth panel”仍然显示,好像绑定不起作用一样

app.controller('Main',['$scope',function($scope){
    $scope.viewModel = {
        panels:{
            auth:false
        }
}]);

neura.controller('PeopleNPlaces',['$scope',function($scope){
    $scope.viewModel.panels.auth = true;
});
指令看起来像这样

 app.directive('authPanel',function(){

return {
    templateUrl:'js/directives/authPanel.html',
    restrict:'E',
    scope:{
        viewModel:'='
    },
    link:function($element,$attrs,$scope){
        console.log();
    },
    controller:function($scope,$attrs){
        console.log();
    }
}
 });
我过去经常使用ng if,我知道它应该绑定到值并动态隐藏和显示指令。
有没有人遇到过这个bug,或者我遗漏了什么?

我会尝试使用类似于

<body ng-controller="Main">
    <div ng-show="viewModel.panels.auth">
        <auth-panel></auth-panel>
    </div>
    <ng-view></ng-view>
</body>


另外,为什么要在主体和路由提供程序中设置控制器?我会坚持使用路由提供程序,并将其从正文中删除。

我在代码中的任何地方都看不到ng,你是说在auth面板上显示ng吗?我认为问题可能在于两个控制器的两个作用域相互独立。
<body ng-controller="Main">
    <div ng-show="viewModel.panels.auth">
        <auth-panel></auth-panel>
    </div>
    <ng-view></ng-view>
</body>