javascript - 如何从迭代器本地链接 JavaScript 方法?

标签 javascript chain

假设我正在使用返回“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/

相关文章:

javascript - jstree - 如何获取实例?

javascript - 如何使图像(div)在网站内跟随光标?

python - 文档中的 celery 链 kwargs 示例

javascript - 如何使用underscore 的chain 方法返回多维数组中的第一项?

javascript - 如何在 JavaScript 中创建可链接函数?

javascript - 打破 promise 链的好方法是什么?

javascript - 定义一个变量来输出innerHTML

javascript - 无法使用nodejs的pdf2json处理多个pdf文件

javascript - 使用降序过滤器生成 ng-repeat 时出错

R Markovchain package - 基于状态序列矩阵拟合马尔可夫链