【问题标题】:Calling function from within Knockout Observable Array从 Knockout Observable Array 中调用函数
【发布时间】:2012-06-14 00:05:43
【问题描述】:

我有一个 Knockout 可观察数组,我希望从 Javascript 和 HTML 中编辑它。这是我的代码:

var ListModel = function(formula) {
  var self = this;
  self.formula = ko.observableArray(formula);

  this.mergeEquation = function(op) {
    if (op.type == "ins") {
      self.formula.splice(op.position, 0, op.value);
    } else if (op.type == "del") {
      self.formula.splice(op.position, 1);
    } else {
      console.info("No match: " + op.value + op.position);
    }
  };
};

我的变量 op 是一个 JSON 字符串。我知道如何使用 HTML 数据绑定调用 mergeEquation 函数,但我如何在同一个 JS 文件中这样做呢?我当前的代码是这样的:

ko.applyBindings(new ListModel(formula));
//...
//initializing of JSON object called op
//...
if (something) {
  mergeEquation(op);
}

但它不起作用。我在这里错过了一些步骤吗?我已经阅读了functionsextenders,但对于我在这里尝试做的事情来说,两者似乎都太过分了。

PS:这是我正在使用的 JSON 结构的示例:

{"type":"ins", "clientID":1223, "version":0, "value":"hi", "position":0, "id":2736}

【问题讨论】:

  • 您需要显示您创建 ListModel 的部分,以及您尝试调用与其相关的 mergeEquation 的部分:)
  • 哦,对了。我将编辑我的帖子以使其更清晰。

标签: javascript knockout.js knockout-2.0


【解决方案1】:

改变:-

ko.applyBindings(new ListModel(formula));

  var vm = new ListModel(formula);
   ko.applyBindings(vm);

所以,现在 vm 是你可以调用合并方程的东西

vm.mergeEquation(op)

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 2013-04-22
    • 2014-10-01
    • 1970-01-01
    • 2017-04-25
    • 2014-11-27
    • 2013-03-11
    • 2015-10-25
    • 2013-11-10
    相关资源
    最近更新 更多