从Knockout Observable Array中调用函数

时间:2012-06-11 02:56:21

标签: javascript knockout.js knockout-2.0

我有一个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 data-bind调用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}

1 个答案:

答案 0 :(得分:3)

改变: -

ko.applyBindings(new ListModel(formula));

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

所以,现在你可以在

上调用mergeequation
vm.mergeEquation(op)