Angularjs 将字符串与多复选框连接起来

Angularjs concatenate string with multi-checkbox

本文关键字:复选框 连接 起来 字符串 Angularjs      更新时间:2023-09-26

我正在尝试在选中多个复选框时刷新并连接字符串。

例如,当选中'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;
        }
    }

发生这种情况是因为您只+=字符串,这意味着它只会增长。您永远不会将其重置回""(空字符串)。如果您在每次更新之前执行此操作,则结果将是正确的。

发生这种情况是因为您的循环中有 +=,但在进入循环之前您没有清除它。 在循环之前清除变量,一切就绪。