尽管有许多类似的问题,我还没有找到如何在子范围内隐藏父ng-show
的DOM元素。
我有两个嵌套控制器。
在父级(附加)中,我使用youtube embed指令,即使在ng-view
中更改了视图,也能够连续阅读视频。
<html ng-app="app" ng-controller="ParentCtrl">
<body>
<youtube-video id="player" ... ng-show="selectedVideo.showVideo"></youtube-video>
<div ng-view></div>
</body>
</html>
当我第一次到达ngRoute中定义的路线时,会调用父控制器方法,在两个控制器中我都可以决定使用
来显示或隐藏视频$scope.selectedVideo.showVideo = true;
视频会按照我的意愿显示或隐藏。
但是,当我使用后退按钮时,不会调用父控制器方法,但我会调用
$scope.selectedVideo.showVideo = false;
但视频仍显示......
此时,当我完全刷新页面(并手动...)时,视频最终会被隐藏。
我不确定为什么会这样......
我基本上希望有一些显示视频的ngRoute视图,而其他视图则没有。 也就是说,我希望来自父控制器的ng-show从子控制器设置为true / false ...
我知道如何实现这一目标?
我尝试将$scope.$parent
与上面的对象和原语一起使用,但这并没有改变一件事。
用于ng-show的实际值已更新,但ng-show不在ngView中但未刷新...
答案 0 :(得分:2)
在父控制器中,您可以使用以下方式侦听所有路线更改:
$scope.$on('$routeChangeSuccess', function(current){
console.log(current)
});
然后使用当前路线的属性,您应该能够通过设置适当的范围变量来管理您的视频播放器