2012-06-11 67 views
1

我有一個Knockout可觀察數組,我希望在Javascript中和HTML中編輯。這裏是我的代碼:從Knockout Observable Array中調用函數

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} 
+0

你需要顯示你創建ListModel的地方,以及你試圖調用mergeEquation的地方:) –

+0

哦對。我會編輯我的帖子,使其更清晰。 –

回答

3

變化: -

ko.applyBindings(new ListModel(formula)); 

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

所以,現在VM是你可以稱之爲合併的東西

vm.mergeEquation(op) 
+0

我明白了。好吧,現在正在工作!謝謝您的幫助! –

相關問題