Angularjs 从子作用域到父作用域的 ng-show 不刷新

Angularjs ng-show from child scope to parent scope not refreshing

尽管有很多类似的问题,但我还没有找到如何从子范围隐藏父范围中带有 ng-show 的 DOM 元素。

我有两个嵌套控制器。 在父级(附加到 )中,我使用 youtube 嵌入指令能够连续阅读视频,尽管 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 未刷新...

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

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

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