【问题标题】:AngularJs array not adding duplicatesAngularJs数组不添加重复项
【发布时间】:2014-06-30 17:18:18
【问题描述】:

我编写了一小段代码,将名称添加到数组中。我遇到的问题是,如果我尝试多次添加相同的名称,它将不允许我这样做。在尝试添加重复名称后,它也不允许我使用任何其他名称。这是我的 Angular 代码

    app.controller('DirectoryController', function($scope){
$scope.name='';
$scope.names= [];


$scope.addName = function(){
    $scope.names.push($scope.name);
}

});

这是我的html

    <div ng-controller= "DirectoryController">
    <h3>Name:</h3><input type="text" ng-model='name'>
    <button ng-click = "addName()">Save</button>
    <hr/>
    <span ng-repeat="name in names">{{name}}<br/></span>
</div>

【问题讨论】:

    标签: javascript arrays angularjs


    【解决方案1】:

    尝试将您的跨度更改为:

    <span ng-repeat="name in names track by $index">{{name}}<br/></span>
    

    默认情况下,ng-repeat 通过引用跟踪数组中的项目,重复的文字可以具有相同的标识。当您的数组中存在重复项时,默认行为会导致错误,这将导致您看到的行为(添加重复项失败,然后完全停止工作)。

    当遇到重复项时,您可能会在控制台中看到来自 ng-repeat 的错误。

    【讨论】:

    • 稍微澄清一下,@dustyrockpile 是说您实际上可能在数组中有重复项,但您在输出中看不到它们。也许您可以查看 $scope.names 的内容以确保或粘贴类似 {{ names | json }} 进入页面只是为了检查。
    • 感谢@JohnMunsch,我已经更新了我的答案以澄清。
    猜你喜欢
    • 2018-02-20
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多