2015-09-27 75 views
0

我有一個主索引頁面,其中我最初隱藏頁腳欄。但是我想在某個子視圖中點擊某個項目時顯示它。我可以在日誌中看到模型正在發生變化,但未在視圖中反映出來。模型更改沒有反映在視圖中angularjs

索引頁:

<body ng-app="starter"> 

<ion-pane ng-controller="AudioCtrl"> 
    <ion-nav-bar class="bar-positive"> 
     <ion-nav-back-button> 
     </ion-nav-back-button> 
    </ion-nav-bar> 
    <ion-nav-view></ion-nav-view> 
    <ion-content></ion-content> 
    <ion-footer-bar ng-hide="musicBar.hide"> 
     <div class="audio-block"> 
      ..... 
     </div> 
    </ion-footer-bar> 
</ion-pane> 
</body> 

子視圖頁面:

<ion-view ng-controller="AudioCtrl as controller" title="{{selectedCategory}}"> 
    <ion-content> 
     <ion-list> 
      <ion-item ng-repeat="item in items" ng-click="$parent.songClicked()">{{item.desc}}</ion-item> 
     </ion-list> 
    </ion-content> 
</ion-view> 

角代碼:

app.controller('AudioCtrl', function ($sce, $scope) { 
     $scope.musicBar= { 
      hide: true 
     }; 
     $scope.songClicked = function(){ 
      console.log($scope.musicBar.hide); 
      $scope.musicBar.hide = false; 
      console.log($scope.musicBar.hide); 
     }; 
    } 

); 

,當我點擊我可以看到musicBar.hide更改項目真假,但它沒有反映在視圖中。我也檢查了其他類似的問題,但解決方案不起作用。我已經嘗試使用$ scope。$ digest()和$ scope。$ apply(),但是後來我得到應用程序已經在進行中。

回答

0

index.html和cub視圖分別由它們自己的AudioCtrl實例管理,每個實例都有自己的範圍。

當主視圖範圍的musicBar.hide變爲true時,標頭變得可見,但是永不會發生,因爲子視圖不會修改它。它修改了子視圖範圍的變量musicBar.hide

我看不到任何理由爲什麼子視圖會有與主視圖相同的控制器。它不應該。

+0

謝謝,使用$ emit和$ on與兩個不同的控制器一起工作。 –