我有一个嵌套的json数据,即:
{
name: 'alex',
tel: {
personal: '347xxxx',
work: '331xxxx'
}
}
然后是以下模型:
Ext.define("Employer", {
extend: 'Ext.data.Model',
idProperty: 'personalTel',
fields: [...
{name: 'personalTel', mapping: 'tel.personal'}
最后是以下商店:
Ext.create('Ext.data.Store',{
model: 'Employer',
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'root'
}
},
data: myInitialData //an array containing json objects
只要数据包含在myInitialData中,就会正确设置personalTel字段。 但是,向商店添加新记录不会触发映射,因此我发现自己有一个奇怪的personalTel属性,即自动ID extjs put!
答案 0 :(得分:1)
ExtJS允许您在使用阅读器时通过嵌套加载多个模型。它不允许在直接实例化模型时创建这些模型,这就是将对象添加到商店的功能。
这个想法是每个模型都用自己的商店分开处理。想要为客户添加电话号码?首先创建电话号码,将其放入商店,然后参考电话号码创建客户。
但这种方法有点笨拙,只适用于真正属于单独实体的模型。
另一种方法是使用自定义类型,或者只是使用“自动”类型(将数据视为可以执行所需操作的blob)。这两种方法都有其缺点。