1

Javascript内およびHTMLからも編集したいKnockout監視可能配列があります。これが私のコードです:

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);
}

しかし、うまくいきません。ここでいくつかのステップを逃していますか?関数エクステンダーについて読んだことがありますが、ここでやろうとしていることにはどちらもやり過ぎのようです。

PS: これは、私が使用している JSON 構造のサンプルです。

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

1 に答える 1

3

変化する :-

ko.applyBindings(new ListModel(formula));

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

したがって、vm は、mergeequation を呼び出すことができるものです。

vm.mergeEquation(op)
于 2012-06-11T03:11:32.787 に答える