1

儘管存在許多類似的問題,但我還沒有找到如何在子作用域的父作用域中隱藏ng-show的DOM元素。從子範圍到父範圍的Angularjs ng顯示不刷新

我有兩個嵌套的控制器。 在父親(附加)中,我使用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顯示從子控制器設置爲真/假...

任何想法我怎麼能實現這一目標?

我試圖使用$scope.$parent與上述對象和一個原語,但沒有改變一件事。

這是因爲用於NG-節目被更新,但NG-顯示正在出ngView的不刷新實際值...

+0

可以通過使用routeChange事件得到了很多關於當前路由信息來管理您的視頻播放器。不清楚什麼決定了視頻狀態,但聽起來像一個簡單的服務結合routeParams將幫助你很多 – charlietfl

+0

routeChange如何鏈接到在ngView之外刷新Dom? – user1144446

+0

可以監聽ngView以外的路由變更。這是來自$ rootScope的廣播。例如,ngView以外的導航欄...可以使用它設置活動狀態 – charlietfl

回答

2

在你可以聽使用的所有路由變化父控制器:

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

然後使用當前的路由的屬性,你應該能夠通過設置適當的範圍變量

+0

很高興它運作了出來 – charlietfl

+0

這真的幫了我..謝謝 –