我很难弄清楚将函数绑定到JavaScript / Angular对象数组中每个项目的语法。

我尝试了各种方法,虽然在语法上可能不正确,但我觉得这里采用的方法在逻辑上是正确的。

var module = angular.module('app', [])
  .controller('controller', function () {
    var vm = this;

    vm.foo = 5;
    vm.bars = [
      {
        price: 1000
      },
      {
        price: 2000
      }
    ];

    var qty = function () {
      return vm.foo / this.price;
    };

    for(var i = 0; i < vm.bars; i++) {
      vm.bars.bind(vm.bars[i], qty);
    }
  });


我的想法是,将每个项目的this与其自身绑定,将是允许每个项目在price函数中引用其自身的qty()属性的最佳方法,该函数位于对象外部。

我基本上只是在设置数组时尝试避免将函数复制/粘贴为每个项目的属性。

最佳答案

我不确定您要在这里实现什么,但是如果您想向所有元素添加qty函数,可以像这样完成:

var module = angular.module('app', [])
  .controller('controller', function () {
    var vm = this;

    vm.foo = 5;
    vm.bars = [
      {
        price: 1000
      },
      {
        price: 2000
      }
    ];

    var qty = function () {
      return vm.foo / this.price;
    };

    vm.bars.forEach(function(bar){
      bar.qty = qty;
    })


  });

关于javascript - 将方法绑定(bind)到数组中的每个项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37246009/

10-08 21:01