0

我有一個代碼,其中包含一個按鈕,其中包含一個ng按鈕,當它被按下時它將新標籤添加到標籤數組中。AngularJS - 刪除一個後設置活動標籤集

<div class="btn btn-primary" ng-click="add()">Add</div> 

$scope.add = function() 
    { 
    $scope.tabs.push({heading: 'new', content: 'ddddddd'}); 

    $timeout(function() 
    { 
     $scope.active = $scope.tabs.length; 
    }); 
    } 

然後,該陣列被填充並且在視圖showd:

<uib-tabset active="active"> 
    <uib-tab ng-repeat="tab in tabs" index="$index + 1"> 
     <uib-tab-heading>{{ tab.heading }} - <a ng-click="remove($index)">remove</a></uib-tab-heading> 
     {{tab.content}} 
     </uib-tab> 
    </uib-tabset> 

另外,每個標籤具有調用此功能的刪除鏈接:

$scope.remove = function(index) 
    { 
    $scope.tabs.splice(index, 1); 
    $scope.active = $scope.tabs.length; 
    } 

的問題是當我刪除一些不是最後添加的選項卡的選項卡時,活動選項卡和索引不一樣。有一個plunkr來演示這個問題:http://plnkr.co/edit/02Lll7oPYyvAxcKu5GkK?p=preview正如你所看到的,當一個標籤(沒有最後一個)被刪除時,「Tabs」和「Index」變量是不一樣的。

有什麼想法嗎?

+0

? –

+0

當我刪除一個標籤時,我不想設置一個新的活動標籤,只需保留最後一個活動標籤即可。問題出現在刪除標籤後,我添加一個新標籤。在這一刻是的,我想設置活動這個新標籤,但我沒有得到結果 –

回答

0

目前,角引導不支持動態生成選項卡。 但是如果你想$timeout解決方案工作。 你可以閱讀更多從here

您需要定義一個timeout功能,會照顧選定的選項卡,使每當你要添加新的選項卡或刪除任何現有的一個。 它採用選項卡列表中最後一個選項卡的標識。

function callTimeOut(tabNoIndex) { 

     $timeout(function() { 
      $scope.active = tabNoIndex; 
     }, 0); 
     } 

您的標籤數組應該看起來像這樣,其中tabNo作爲閉包屬性。 這將追蹤到目前爲止創建的標籤號爲uitab在刪除或添加後不會重新排列標籤ID。您必須處理此問題。

$scope.tabs.push({ 
      heading: 'new', 
      content: 'ddddddd', 
      id: ++tabNo 
     }); 

您的添加和刪除功能應該看起來像這樣。

$scope.add = function() { 
     $scope.tabs.push({ 
      heading: 'new', 
      content: 'ddddddd', 
      id: ++tabNo 
     }); 

     callTimeOut($scope.tabs.length); 

     } 


     $scope.remove = function(index) { 
     $scope.tabs.splice(index, 1); 

     var tabIndex = $scope.tabs[$scope.tabs.length - 1].id; 
     callTimeOut(tabIndex); 
     } 

這裏是你想要哪個選項卡設置活動時,任何已刪除的工作Plunker

+2

您的Plunker運行不正常。 請注意,當您刪除不是最後一個選項卡的選項卡並添加一個新選項卡時,索引將變爲空,並且沒有選項卡被選中。 –

相關問題