2012-03-13 43 views
2

我想將knockout功能實現到已經存在的頁面。因此我想用現有腳本中的ViewModel數據進行操作。我嘲笑了一個例子,但它不能正常工作。Knockout JS - 通過自定義腳本更新ViewModel數據

ViewModel已正確綁定到UI(嘗試在輸入中輸入)。當我在後端修改ViewModel數據時,它也起作用(,按下按鈕)。但是,當我通過在輸入框中鍵入來再次修改輸入值時,數據不會更改。

如何從後端適當修改ViewModel數據(某些現有代碼處理數據)。請注意,我已經使用jQuery click事件作爲例子。現有的代碼可能以不同的方式操作數據。

下面是代碼(HTML):

<!-- View --> 
<p>First name: <strong data-bind="text: myName"></strong></p> 
<input data-bind="value: myName"></input> 
<button>Click me</button> 

和JS:

// ViewModel 
var AppViewModel = function() { 
    this.myName= ko.observable("John Doe"); 
} 
// ViewModel instance 
var app = new AppViewModel(); 

// Activates knockout.js 
ko.applyBindings(app); 

// Custom external code that changes the data in the ViewModel instance 
$("button").click(function() { 
    app.myName= ko.observable("Steve Peterson"); 
    ko.applyBindings(app); 
}); 

回答

4

而不用在單擊處理

app.myName= ko.observable("Steve Peterson"); 

新觀察到的修改現有的可觀測

的價值
app.myName("Steve Peterson"); 

工作示例 http://jsfiddle.net/S9HBq/

+0

謝謝你,工作。 – Matej 2012-03-14 11:28:36

相關問題