Angular如何一次性编辑数组中的所有元素

3

我目前有一个对象数组,用于生成HTML复选框(ng-repeat)。所有这些对象都有一个x.checked = true/false属性。如何一次性将所有对象的x.checked设置为false?

现在我使用一个简单的for循环。

for(var i = 0; i < array.length; i++) {
  array[i].checked = false;
}

Angular有更快或更简短的处理方式吗?
谢谢!

angular.forEach - Michael
也许你需要使用ng-init或循环来解决这个问题。http://plnkr.co/edit/JQnCnmSEAqyj93Sgs9KJ?p=preview - Coder
3个回答

2

从本质上讲,没有一种方法可以做到这一点,无论你如何编写代码,你都不能一次性完成所有操作,最多只能是你以上所写的缩写形式。


他们遍历整个列表,这是O(n)的复杂度。 - axelduch

1

是的,你可以使用 angular.forEach来实现这个功能,像这样:

angular.forEach(array, function (item) {item.checked = false;}

这也是一个循环对吗?但我不知道哪个更快,angular.forEach 还是 for - Coder
是的,它也是一个循环。angular.forEach 比 for 循环慢。 - Rajesh Kumar Maurya

1
或者你可以使用Array.forEach类似的语法来替代angular.forEach,但我认为它会更快。
items.forEach(function (item, index, array) {
  item.checked = false;
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接