我很难找出将函数绑定到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()
属性的最佳方式,该函数位于对象。
我基本上只是在设置数组时试图避免将函数复制/粘贴为每个项的属性。
答案 0 :(得分:1)
我不确定你想要在这里实现什么,但如果你想为所有元素添加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;
})
});
答案 1 :(得分:0)
尝试IIFE(立即调用函数表达式)。
for(var i = 0; i < vm.bars; i++) {
(function(i){
vm.bars.bind(vm.bars[i], qty);
)(i);
}