2017-02-13 14 views
0

我喜歡根據視圖隱藏和顯示圖標。這我不能這樣做,因爲ion-nav-bar正在僅從tabsCtrl在「ion-nav-bar」中顯示/隱藏視圖

這裏訪問的視圖標記:

<ion-nav-bar class="bar-stable"> 
    <ion-nav-back-button> </ion-nav-back-button> 
    <ion-nav-title>My App Title</ion-nav-title> 
    <ion-nav-buttons side="right"> 
    <button class="button icon ion-ios-information-outline" ng-click="openFaqModal()" ng-hide="showHideFAQ"></button> 
    <button class="button icon ci-bookmark" ng-click="openBoookmarkModal()" ng-show="showHideBookmark"></button> 
    </ion-nav-buttons> 
</ion-nav-bar> 

這裏是控制器:

// Tab Controller - *** This Work *** 
.controller('TabCtrl', function ($scope) { 
    $rootScope.showHideFAQ = true; 
    $rootScope.showHideBookmark = true; 
}) 

// Detail Controller - *** This do not work *** 
.controller('DetailCtrl', function ($scope) { 
    $rootScope.showHideFAQ = true; 
    $rootScope.showHideBookmark = true; 
}) 

這裏是路線:

// setup an abstract state for the tabs directive 
.state('tab', { 
    url: '/tab', 
    abstract: true, 
    templateUrl: 'views/tabs.html', 
    controller: 'TabCtrl' 
}) 

.state('tab.detail', { 
    url: '/resources/:resourcesId', 
    views: { 
    'tab-resources': { 
     templateUrl: 'views/detail.html', 
     controller: 'DetailCtrl' 
    } 
    } 
}) 

我不確定它爲什麼在「TabCtrl」中工作,但沒有在「Deta」中ilCtrl「,因爲兩個控制器都在一個視圖中加載。我懷疑這與scope有關。

+0

我想你好想注入** $ rootScope **了兩個控制器,一旦你在** $ rootScope設定值**會整個應用程序會話保持不變。 – Naitik

+0

@Naitik我已經嘗試過,但是,正如前面提到的'TabCtrl'在所有視圖中都可用,一旦它進入所需的視圖,我不能重置它。 – Syed

+0

然後使用** $ localStorage **而不是** $ rootScope ** – Naitik

回答

0

我使用$ionicView.enter$ionicView.leave解決我的問題:

// Detail Controller 
.controller('DetailCtrl', function ($scope, $ionicView) { 
    // Show Bookmark and Hide FAQ icon 
    $scope.$on('$ionicView.enter', function() { 
    $rootScope.showHideFAQ = true; 
    $rootScope.showHideBookmark = true; 
    }); 

    // Hide Bookmark and Show FAQ icon 
    $scope.$on('$ionicView.leave', function() { 
    $rootScope.showHideFAQ = false; 
    $rootScope.showHideBookmark = false; 
    }); 
})