2016-02-03 27 views
3

我試圖刷新並連接一個字符串時,多個複選框被選中。Angularjs連接字符串與多選框

例如,當'apple''banana'檢查,$scope.strin克應='ab',那麼當'banana'爲未選中狀態,$scope.string應與'a'留。

我做了什麼不串聯,但是$ scope.string不會刪除舊的價值觀念,它仍然是='aba'

這是我在JsFiddle嘗試。

你可以看到當所有的複選框被選中它給了我aababcabcd

感謝

回答

3

我已經更新了你的代碼:http://jsfiddle.net/d3ruexuv/1/

的文本不清除,因爲你只追加的項目,以目前的價值,而不是完全創造一個新的字符串。您現在可以看到一個空字符串總是先創建:

var newText = ""; 

,並選擇級聯到

+0

如何在$ watch外部獲得** newText **? –

1

只需將您的循環之前添加$scope.text = "";

這裏是一個fixed code

$scope.text = ""; 
    for(var i = 0; i < $scope.items.length; i++) { 
     if($scope.items[i].selected === true){ 
      $scope.text += $scope.items[i].prefix; 
     } 
    } 

發生這種情況,因爲你只+=字符串,這意味着它只會增加。您永遠不會將其重置爲""(空字符串)。 如果你想在每次更新之前完成,那麼結果將是正確的。

0

發生這種情況是因爲在循環中有+ =,但在進入循環之前未清除它。在循環之前清除變量,然後全部設置。

2

您需要在每次$ scope.watch觸發

時間刷新$ scope.text物業項目
$scope.$watch('items', function() { 

    $scope.text = ""; 

    for(var i = 0; i < $scope.items.length; i++) { 
     if($scope.items[i].selected === true){ 
      $scope.text += $scope.items[i].prefix; 
     } 
    } 
}, true);