У меня есть наблюдаемый массив 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. Я знаю, как вызвать функцию mergeEquation
с помощью привязки данных HTML, но как мне это сделать из того же файла JS? Мой текущий код выглядит примерно так:
ko.applyBindings(new ListModel(formula));
//...
//initializing of JSON object called op
//...
if (something) {
mergeEquation(op);
}
но это не работает. Я что-то упустил? Я прочитал о функциях и extenders, но оба кажутся слишком излишними для того, что я пытаюсь сделать здесь.
PS: Вот образец структуры JSON, с которой я работаю:
{"type":"ins", "clientID":1223, "version":0, "value":"hi", "position":0, "id":2736}