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)
});
然后使用当前路由的属性,您应该能够通过设置适当的范围变量来管理您的视频播放器
尽管有很多类似的问题,但我还没有找到如何从子范围隐藏父范围中带有 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)
});
然后使用当前路由的属性,您应该能够通过设置适当的范围变量来管理您的视频播放器