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

时间:2014-03-19 06:40:13

标签: javascript jquery angularjs loops

Angular JS中jquery的$.each()循环的替代方法是什么。

我在jquery中有以下内容(在我的基于Angular JS的项目中):

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

我不想使用jquery和angular的混合,因为他们说这样做是不好的做法(是吗?)。是否有像$.each()这样的角度提供的功能?或者我应该使用普通的JavaScript?

3 个答案:

答案 0 :(得分:31)

您可以使用angular.forEach()在angularjs中进行迭代

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

答案 1 :(得分:0)

另一种选择是使用Array.prototype.forEach并使用https://github.com/es-shims/es5-shim为旧浏览器填充它。

这样,你可以这样做:

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

答案 2 :(得分:0)

angular.forEach对我来说做得很好。它提供简洁;

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

但这取决于一个用例到另一个用例。在我编写的大多数代码中,它证明非常有用,它已完全取代$.each

关于混合,angular附带了jQuery方法的子集,在大多数情况下,这些方法可以完成工作并且不需要任何其他方法。我更喜欢保持应用程序轻量级。另外,对于我来说,不要将其与jQuery混合起来是一个原则问题 - 因为Angular是一个完全不同的思路。