javascript - ng-repeat 只添加一次

标签 javascript angularjs angularjs-ng-repeat

使用 AngularJS 有一种方法可以只添加一次项目。对于下面的这段代码,假设我输入 F 并将其添加到项目列表中。有没有办法限制我或任何用户再次添加 F ?

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
    <div ng-controller="MyCtrl">
        <ul>
            <li ng-repeat="item in items track by $index">{{item}}</li>
        </ul>
        <input ng-model="newItem" type="text"></input>
        <button ng-click="add(newItem)">Add</button>
    </div>
</div>

<script>
var app = angular.module('myApp', []);

app.controller('MyCtrl', function($scope) {
    $scope.items = ["A", "B", "C", "D"];
    $scope.add = function(item) {
        $scope.items.push(item);
    };

});
</script>

最佳答案

ES5

您必须在您的方法中手动检查它。

$scope.add = function (item) {
    if ($scope.items.indexOf(item) === -1) {
        $scope.items.push(item);
    }
};

ES6

您可以使用 Set .

The Set object lets you store unique values of any type

$scope.items = new Set(["A", "B", "C", "D"]);

$scope.add = function (item) {
    $scope.items.add(item);
};

关于javascript - ng-repeat 只添加一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669539/

相关文章:

javascript - 不要在 ng-repeat 中重复按钮

AngularJs:更新列表值时,嵌套 UI-Bootstrap Accordion 不起作用

Javascript 检查产量支持

angularjs - Uncaught Error : [$injector:modulerr] http://errors. angularjs.org/1.2.16

javascript - Promise { <pending> } 说,Electron 对话框对象不返回任何内容

javascript - $mdDialog 使用函数关闭

javascript - 通过 ng-repeat 将 N 个元素排序到列中

javascript - Ng-repeat 切换,初始状态显示第一个子项并隐藏其余项

javascript - jQuery Mobile 导致 CSS3 动画在面板显示中重新触发

javascript - 如何显示隐藏元素前元素并显示一个嵌套的 ul