2013-05-08 194 views
0

我有我的意見KnockoutJS一個問題,在使用這樣的:視圖模型不更新

Account holder: <input type = 'text' data-bind = "value: payer.banking_details()[0] ? payer.banking_details()[0].account_holder: 'unknown'" style = "width: 100%"> 

它似乎沒有更新此:

Account holder: <span data-bind = "text: payer.banking_details()[0] ? payer.banking_details()[0].account_holder: 'unknown'"></span>\> 

有什麼建議?

回答

3

您沒有向我們展示您的ViewModels,只有您的視圖。但是,我猜測你有一些關於不在後臺解析的綁定的JavaScript錯誤,因爲你正在潛入你的payer ViewModels而不用作爲函數調用它們。

如果我調整自己的意見如下:

Account holder: 
<input type='text' 
     data-bind="value: payer().banking_details()[0] ? payer().banking_details()[0].account_holder: 'unknown'" 
     style = "width: 100%" /> 
Account holder: 
<span data-bind="text: payer().banking_details()[0] ? payer().banking_details()[0].account_holder: 'unknown'"></span> 

,並使用視圖模型是這樣的...

var holder = function() { 
    this.account_holder = ko.observable("J DOE"); 
} 

var person = function() { 
    this.banking_details = ko.observableArray(); 
    this.banking_details.push(new holder()); 
} 

var vm = function() { 
    this.payer = ko.observable(new person()); 
} 

ko.applyBindings(new vm()); 

...那麼這一切工作正常。有關演示,請參閱this JSFiddle(編輯字段,然後離開輸入:跨度得到更新)。

PS。我還將代碼的最後一位(</span\>更改爲</span>),這可能也可能不重要。