我从服务器获取了以下JSON数据。
var viewModel= { InvoiceOrderID:55 orderItem :{ OrderItemID:32 ProductCode:45 Name: ZipZapper } }
我在此viewModel数据上使用了ko.mappingfromJS
。
ko.mappingfromJS(viewModel,{},self)
ko.applyBindings(self)
是否生成了绑定
如何数据绑定内部嵌套对象的ProductCode
orderItem().ProductCode
不起作用
答案 0 :(得分:0)
你可以使用knockout mapping plugin创建函数来告诉你如何在这里映射你的整个树,虽然我怀疑你会想要一个视图模型来表示OrderItem。
var OrderItemViewModel = {
OrderItemId: ko.observable();
ProductCode: ko.observable();
Name: ko.observable()
}
var mapping = {
'orderItem' : {
create: function(data){
return new OrderItemViewModel(data);
}
}
}
var viewModel = ko.mapping.fromJS(data, mapping);
答案 1 :(得分:0)
正如@tizzy所指出的那样,knockout mapping不会以这种方式工作 - 默认情况下它将属性转换为observables和数组转换为observableArrays,但嵌套对象未转换(尽管它们的内在属性也转换为可观察的。)
因此,对于您的特定声明,您的ViewModel应如下所示:
function ViewModel(data) {
var mapping = {
'orderItem': {
create: function(options) {
return ko.observable(options.data);
}
}
}
ko.mapping.fromJS(data, mapping, this);
}
请参阅demo。