0

全部。Angular-ui-bootstrap - 無法禁用ng中的標籤 - 重複

我正在使用angular和ui-bootstrap來創建一個選項卡的菜單,希望用戶可以啓用/禁用它們不需要的選項卡。我試圖嚴格遵守模板代碼,以及實現我自己的功能來禁用點擊標籤,但我無法讓我的標籤響應與他們在示例中所做的相同的方式。我一直在閱讀,並猜測它與ng-repeat創建自己的作用域有關,但我還沒有解決它。任何幫助將非常感激!

我試圖證明我在this plunker中處理的是什麼。

相關的控制器代碼:

$scope.theirTabs = [ 
    { title:'Dynamic Title 1', content:'Dynamic content 1' }, 
    { title:'Dynamic Title 2', content:'Dynamic content 2', disabled: true } 
]; 

$scope.myTabs = [ 
    { title:'Orders', 
    content: { 
     description: 'DESCRIPTION', 
     poNumber: 'PO_NUMBER', 
     origFacility: 'ORIGIN_FACILITY', 
     destName: 'D_NAME', 
     destCity: 'D_CITY' , 
     transitType: 'TRAN_TYPE', 
     transitCode: 'TRAN_CODE' 
    }, 
    disabled: false 
    }, 
    { title:'Inventory', 
    content: { 
     createdDateTime: 'CREATED_DATE_TIME', 
     userName: 'USER_NAME' 
    }, 
    disabled: false 
    }, 
    { title:'Items', 
    content: { 
     allocatedQty: 'ALLOCATED_QTY', 
     unitsPacked: 'UNITS_PAKD', 
     shippedQty: 'SHIPPED_QTY' 
    }, 
    disabled: false 
    }, 
    { title:'Activity', 
    content: { 
     orderNumber: 'ORDER_NUMBER', 
     poNumber: 'PO_NUMBER', 
     origFacility: 'ORIGIN_FACILITY' 
    }, 
    disabled: true 
    } 
]; 

$scope.disableTab = function(tab, index) { 
    tab.disabled = true; 
    console.log('tab at index ' + index + ' should be disabled'); 
}; 

相關的HTML(只屬於我這裏包括):

<div class="row"> 
    <div ng-repeat="tab in myTabs track by $index" class="select-tables-checkboxes col-md-3"> 
     <!-- <label for="select-tables">{{tab.title}}</label> --> 
     <button type="button" 
       name="select-tables" 
       id="select-tables" 
       ng-click="myTabs[$index].disabled = ! myTabs[$index].disabled">Enable/Disable {{tab.title}} 
      <!-- also tried ng-click="disableTab(tab, $index)" --> 
    </div> 
    </div> 
    <tabset> 
    <tab ng-repeat="tab in myTabs" heading="{{tab.title}}" active="tab.active" ng-disabled="tab.disabled"> 
     <!-- <div class="row" ng-repeat="(key, value) in content track by $index"></div> --> 
     <div class="row" ng-repeat="(k, v) in tab.content"> 
      <div class="column-exists-checkbox col-md-1"> 
      <input type="checkbox" 
        name="column-exists" 
        id="column-exists" 
        ng-model="columnExists"> 
      </div> 
      <div class="column-description col-md-4"> 
      <p class="column-description"><strong>{{k}}</strong></p> 
      </div> 
      <div class="column-name col-md-7"> 
      <input type="text" 
        name="column-name" 
        id="column-name" 

        value="{{v}}"> 
      </div> 
     </div> 
    <!-- </div> --> 
    </tab> 
    </tabset> 

順便說一句,當我運行我的代碼,然後點擊我自己的按鈕禁用/啓用選項卡(其中我意識到我只編碼禁用$ scope.disableTab函數),我得到正確的控制檯輸出,即'索引0處的選項卡應該被禁用',當我點擊訂單按鈕時​​,依此類推。

預先感謝您的任何建議!

回答

2

對於tab指令,你應該使用disable屬性

<tab ng-repeat="tab in myTabs" heading="{{tab.title}}" active="tab.active" disable="tab.disabled"> 
+0

你是正確的,謝謝你,但我開始使用的,在我的代碼,這是行不通的。這是什麼讓我失望的嘗試禁用和自定義功能的路徑。它實際上可以在plunker中工作,但是當我將工作代碼直接複製到我的應用程序代碼中時,選項卡標題不響應。他們鋪設正確,其他所有事情都應該如此,所以我有點困惑。 –

+0

真的嗎?我已經分叉你[plunker](http://plnkr.co/edit/uNYhdAEiGz4O9IWqG29Y?p=preview)和殘疾人按預期切換,我點擊啓用/禁用按鈕 – user2718281

+0

那麼,plunkr /應用程序的差異導致我失望找出問題的途徑,那就是我正在使用的框架將ui-bootstrap 0.12.0作爲依賴關係,並且plunker使用了0.13.0。我更新了應用程序0.13.0,它的工作原理是這樣的。唷!謝謝! –