我正在尝试在选中多个复选框时刷新并连接字符串。
例如,当选中'apple'
和'banana'
时,应$scope.strin
g ='ab'
,然后当未选中'banana
' 时,应保留$scope.string
'a'
。
我所做的确实连接了,但是$scope.string不会删除旧值,它仍然是='aba'
这是我对JsFiddle的尝试。
您可以看到选中所有复选框后,它给了我aababcabcd
谢谢
我已经更新了你的代码:http://jsfiddle.net/d3ruexuv/1/
文本未清除,因为您只是将项目附加到当前值,而不是完全创建新字符串。现在您可以看到始终首先创建一个空字符串:
var newText = "";
以及与之连接的选定项目
$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);
只需在循环之前添加$scope.text = "";
即可。
这是一个固定代码:
$scope.text = "";
for(var i = 0; i < $scope.items.length; i++) {
if($scope.items[i].selected === true){
$scope.text += $scope.items[i].prefix;
}
}
发生这种情况是因为您只+=
字符串,这意味着它只会增长。您永远不会将其重置回""
(空字符串)。如果您在每次更新之前执行此操作,则结果将是正确的。
发生这种情况是因为您的循环中有 +=,但在进入循环之前您没有清除它。 在循环之前清除变量,一切就绪。