多くの同様の質問にもかかわらず、ng-show
子スコープから親スコープで DOM 要素を非表示にする方法が見つかりませんでした。
ネストされたコントローラーが 2 つあります。親の 1 つ (に添付) では、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 の外にあるため更新されません...