假设我正在使用返回“this”的 js 方法,因此可以像这样链接:
something.add({a: 'xyz', b: 123}).add({a: 'abc', b: 456});
我怎样才能将它们链接到迭代器的某些东西上?例如:
$scope.bindings = [
{
key: 'up',
func: function() {
$scope.scroll(1)
}
},{
key: 'down',
func: function() {
$scope.scroll(-1);
}
},
];
---编辑---
我使用的库是 Angular hotkeys 。我想以一种通用的方式提问,以帮助处于类似位置的其他人。
我有:
var hotBindings = hotkeys.bindTo(scope);
for (var bind of scope.bindings) {
hotBindings = hotBindings.add({
combo: bind.key,
callback: function(e) {
e.preventDefault();
bind.func();
}
})
}
这会将“向下”方法分配给两个按键。如果我在没有循环的情况下写出代码,使用 scope.bindings[index].key (例如)并链接 .add() 方法,那么它就可以工作。我也试过没有“hotBindings =”。
请不要提及 scopve 与 $scope,因为它被传递到 angular 指令中的链接函数 - angular 几乎肯定与它无关。
最佳答案
我看到的唯一问题是 for (var bind of bindings)
不工作。
编辑:认为它与 for (var bind of bindings)
语法和 var
v.s. 有关。 let
,结果证明提供的代码可以正常工作。如果真正的问题浮出水面,我会删除这个答案。必须在 Something
类中吗?
似乎一切正常:
var Something = function() {
this.data = [];
this.add = function(item) {
this.data.push(item);
return this;
}.bind(this);
};
var bindings = [{
x: 'hi',
func: function() {
console.log("hi");
}
}, {
x: 'bye',
func: function() {
console.log("bye");
}
}];
var something = new Something();
for (var bind of bindings) {
something.add({
x: bind.x,
callback: bind.func
})
};
console.log(something.data);
关于javascript - 如何从迭代器本地链接 JavaScript 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39995354/