ViewModel没有更新

时间:2013-05-08 12:26:46

标签: knockout.js

使用它时,我的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>\>

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您尚未向我们展示您的ViewModel,只展示您的观看次数。但是,我猜测你有一些关于未在后台解析的绑定的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>

使用像这样的ViewModel ......

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>),这可能会也可能不重要。