0

我正在構建一個包含三個選項卡的應用程序:主頁,配置文件和設置。

在「主頁」選項卡中有一個項目列表。當我點擊一個項目時,我進入該項目的「細節」部分,其中有一些按鈕和其他控件。

本質上,「配置文件」選項卡完全是前面提到的「細節」部分,但沒有這種控制。所以,我試圖做的是配置狀態如下內容(我將只顯示相關的):

.state('tab', { 
     url: '/tab', 
     abstract: true, 
     templateUrl: 'templates/tabs.html' 
     }) 

     .state('tab.home', { 
     url: '/home', 
     views: { 
      'tab-home': { 
      templateUrl: 'templates/tabs/tab-home.html', 
      controller: 'HomeCtrl' 
      } 
     } 
     }) 

     .state('tab.assetdetail', { 
      url: '/asset/:assetId/:readOnly', 
      views: { 
       'tab-home': { 
        templateUrl: 'templates/tabs/asset-detail.html', 
        controller: 'AssetDetailCtrl' 
       } 
      } 
     }) 

     .state('tab.profile', { 
      url: '/profile/:assetId/:readOnly', 
      views: { 
      'tab-profile': { 
       templateUrl: 'templates/tabs/asset-detail.html', 
       controller: 'AssetDetailCtrl' 
      } 
      } 
     }) 

在資產detail.html我把一些NG隱藏(或多個)當readOnly標誌設置爲true時,我想要隱藏的元素。例如:

<div ng-hide="model.readOnly" class="row"> 
     <div class="col col-10"> 
      <label class="checkbox"> 
       <input type="checkbox"> 
      </label> 
     </div> 
     <div class="col col-33 col-center"> 
      <span>{{ 'addToFav' | translate }}</span> 
     </div> 
     <div class="col col-10"> 
      <label class="checkbox"> 
       <input type="checkbox"> 
      </label> 
     </div> 
     <div class="col col-33 col-center"> 
      <span>{{ 'addToContacts' | translate }}</span> 
     </div> 
    </div> 

的問題是,無論是我打電話與readOnly的= TRUE或只讀=假,它會隱藏所有的組件頁面。在我AssetDetailCtrl我:

$scope.assetId = $stateParams.assetId; 
    $scope.model = { 
     assetDetail: '', 
     lyncAvailable: true, 
     readOnly: $stateParams.readOnly 
} 

而且我可以看到,每一個readOnly的叫我用不同的$ stateParams頁面時有正確的價值,但對DOM沒有影響。

我該怎麼辦?

感謝

回答

1

$stateParams PARAMS總是字符串。 "true" == true,還有"false" == true。你需要以某種方式強制布爾值。

  1. 在控制器:readOnly: !!$stateParams.readOnly
  2. 或視圖ng-hide="model.readOnly === 'true'" - 注意引號'true'
+0

非常感謝你。現在它工作! –