如何从迭代器本地链接JavaScript方法
How to chain JavaScript methods natively from an iterator?
假设我使用js方法返回'this',因此可以像这样链接:
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热键。我想用一种一般的方式来帮助那些处于类似处境的人。
我有:
var hotBindings = hotkeys.bindTo(scope);
for (var bind of scope.bindings) {
hotBindings = hotBindings.add({
combo: bind.key,
callback: function(e) {
e.preventDefault();
bind.func();
}
})
}
这将'down'方法分配给两个按键。如果我写出没有循环的代码,使用scope.bindings[index]。Key(例如)并链接.add()方法,然后它就可以工作了。我也试过没有"hotBindings ="
请不要提及scopve和$scope,因为这是在angular指令中传递给链接函数的——angular几乎肯定与它没有任何关系。
我看到的唯一问题是
for (var bind of bindings)
不工作
编辑:认为它与for (var bind of bindings)
语法和var
vs . 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);
我不确定SomeThing
是什么或者它的add
方法返回什么,但您可以通过执行
let something = new Something();
for (const bind of bindings) {
something = something.add({
x: bind.x,
callback: bind.func
});
}
如果您经常这样做(可能使用不同的方法而不仅仅是"add"),您可以考虑使用辅助函数:
function chain(obj, ...calls) {
for(let {method, args} of calls) {
obj = obj[method](...args)
}
return obj
}
chain(new Somthing(), [
{meth: 'add', args: [
{x: 'hi', func: () => console.log('hi')}]},
{meth: 'add', args: [
{x: 'bye', func: () => console.log('bye')}]}
]})
相关文章:
- 当链接javascript承诺时,如何处理then()函数中的条件
- 如何在grails中链接javascript引导程序方法
- 在PHP代码中单击链接javascript函数调用
- 随机链接javascript以忽略当前页面
- 如何链接javascript承诺和错误
- 在从ruby on rails中的资产管道加载的布局上链接Javascript函数
- 用链接 JavaScript 替换 HTML 的问题
- 突出显示当前链接 Javascript
- 如何在数组中添加超链接(Javascript)
- 有没有一种简单的方法可以在节点上双击 vis.js 创建超链接/javascript-action
- Facebook分享深度链接 - Javascript
- 链接 JavaScript 变量
- 在 AJAX 成功的新选项卡中打开链接 - Javascript
- window.打开一个新页面,然后单击新页面中的链接 - JavaScript
- 链接 JavaScript 函数
- 在 PHP 中链接 Javascript 文件
- 在拖动事件期间禁用链接 Javascript
- 文本框使用 if else 语句打开我的链接 JavaScript
- ajax脚本运行后指向页面的链接(javascript锚点?)
- 动态创建链接Javascript