在Angular JS中的`$.each()`替代方法

11

在AngularJS中,jquery的$.each()循环的替代方法是什么?

以下是我在基于Angular JS的项目中使用的jquery代码:

    $($scope.tasks).each(function(index, task){
        if (task.isCompleted) {
            task.showTask = true;
        }
    });

我不想混用jQuery和Angular,因为他们说这样做是一个不好的实践(是吗?)。 Angular是否提供类似于$.each()的功能?还是我应该使用纯JavaScript?

3个回答

31

在 AngularJS 中,您可以使用 angular.forEach() 来进行迭代。

angular.forEach($scope.tasks, function (task, index) {
    if (task.isCompleted) {
        task.showTask = true;
    }
});

Angular提供了一个带有基本选择器的jQuery皮肤版本,这已经足够了。 - Arun P Johny
他可能在谈论链接函数之外的内容。 - Ben Taliadoros

0
另一个选项是使用Array.prototype.forEach,并使用https://github.com/es-shims/es5-shim为旧浏览器进行模拟。
这样,您可以执行以下操作:
$scope.tasks.forEach(function(task) {
  if (task.isCompleted) {
    task.showTask = true;
  }
});

0

angular.forEach对我来说非常好用。它提供了简洁性;

var newArr = [];
angular.forEach(oldArr, function (val, key) {
    this.push(someFunction(val, key)); // much wow
}, newArr);

但这取决于不同的使用情况。在我编写的大部分代码中,它非常有用,并且已经完全替代了 $.each

关于混合使用,Angular带有一组jQuery方法,在大多数情况下能够胜任工作而不需要其他东西。我更喜欢让应用程序保持轻量级。此外,对于我来说,不将jQuery掺杂其中是一个原则问题——因为Angular是完全不同的思路。


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