我試圖刷新並連接一個字符串時,多個複選框被選中。Angularjs連接字符串與多選框
例如,當'apple'
和'banana'
檢查,$scope.strin
克應='ab'
,那麼當'banana
'爲未選中狀態,$scope.string
應與'a'
留。
我做了什麼不串聯,但是$ scope.string不會刪除舊的價值觀念,它仍然是='aba'
這是我在JsFiddle嘗試。
你可以看到當所有的複選框被選中它給了我aababcabcd
感謝
我試圖刷新並連接一個字符串時,多個複選框被選中。Angularjs連接字符串與多選框
例如,當'apple'
和'banana'
檢查,$scope.strin
克應='ab'
,那麼當'banana
'爲未選中狀態,$scope.string
應與'a'
留。
我做了什麼不串聯,但是$ scope.string不會刪除舊的價值觀念,它仍然是='aba'
這是我在JsFiddle嘗試。
你可以看到當所有的複選框被選中它給了我aababcabcd
感謝
我已經更新了你的代碼:http://jsfiddle.net/d3ruexuv/1/
的文本不清除,因爲你只追加的項目,以目前的價值,而不是完全創造一個新的字符串。您現在可以看到一個空字符串總是先創建:
var newText = "";
,並選擇級聯到
只需將您的循環之前添加$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;
}
}
發生這種情況,因爲你只+=
字符串,這意味着它只會增加。您永遠不會將其重置爲""
(空字符串)。 如果你想在每次更新之前完成,那麼結果將是正確的。
發生這種情況是因爲在循環中有+ =,但在進入循環之前未清除它。在循環之前清除變量,然後全部設置。
您需要在每次$ 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);
如何在$ watch外部獲得** newText **? –