我有一个绑定到SelectedFormat
值的下拉列表。列表选项在加载时从外部源填充,并匹配基于id的视图模型data.Format
对象。
任何人都可以告诉我为什么模型会更新,但UI没有使用正确的Format.Name
感谢。
HTML:
<div data-bind="text:data.Format.Name"></div>
<select data-bind="
options:Controls,
optionsText: 'Name',
value: data.SelectedFormat"></select>
型号:
var jsonData = {
Id: "abc-123",
Name: "Chicken Cheese",
Format: {
Id: 2,
Name: 'Medium',
Other: 'Bar'
}
};
var self = this;
self = ko.mapping.fromJS(data);
self.SelectedFormat = ko.observable(
//return the first match based on id
$.grep(vm.Controls,function(item){
return item.Id === self.Format.Id();
})[0]
);
//when changed update the actual object that will be sent back to server
self.SelectedFormat.subscribe(function (d) {
this.Format = d;
},self);
答案 0 :(得分:1)
在您的代码中,您有Format
和SelectedFormat
。前者不是可观察的,因此无法触发更新。您必须改为使用SelectedFormat
。
<div data-bind="text:data.SelectedFormat().Name"></div>