从javascript for循环到下划线

时间:2014-03-22 23:09:10

标签: javascript underscore.js

我有一个Angular应用程序,我在循环浏览一个集合。我正在使用经典的for循环,但是喜欢使用更新的东西。 underscore.js已经包含在项目中了,我看了一下使用_.each

这是我当前(工作)的js代码:

Batches.create($scope.newPanel).then(function(panel) {
        console.log('panel created: ' + panel.id);
        for(i = 0; i < $scope.selector.tabledata.length; i++){
            createPanelDetails(panel.id, $scope.selector.tabledata[i]);
        }

我想使用_.each,但是如何传递 panel.id 变量,就像我使用for循环一样?

_.each($scope.selector.tabledata, createPanelDetails(panel.id ??, iterator???);

或者我应该使用下划线中的其他方法来实现这一目标吗?

4 个答案:

答案 0 :(得分:2)

使用内联函数:

_.each($scope.selector.tabledata, function(data) {
    createPanelDetails(panel.id, data);
});

答案 1 :(得分:1)

通过下划线

_.each($scope.selector.tabledata, function(elem) {
  createPanelDetails(panel.id, elem);
});

通过角度

angular.forEach($scope.selector.tabledata, function(elem, i){
  createPanelDetails(panel.id, elem);
});

我建议遵循冰箱的建议,使用角度来保持一致性。

答案 2 :(得分:1)

您也可以使用bind创建部分函数

下划线

_.each($scope.selector.tabledata, _.bind(createPanelDetails, undefined, panel.id));

角:

angular.forEach($scope.selector.tabledata, angular.bind(undefined, createPanelDetails, panel.id));

答案 3 :(得分:1)

这是_.each_.partial的完美用例。

_.each($scope.selector.tabledata, _.partial(createPanelDetails, panel.id));