1

尽管有许多类似的问题,我还没有找到如何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 中并没有刷新...

4

1 回答 1

2

在父控制器中,您可以使用以下命令监听所有路由更改:

$scope.$on('$routeChangeSuccess', function(current){ 
    console.log(current) 
});

然后使用当前路由的属性,您应该能够通过设置适当的范围变量来管理您的视频播放器

于 2015-05-04T22:01:38.377 回答