这是一个有效的模型吗?我似乎没有工作?也许我必须使用HasOne,但问题是它有一个关联键而我的数据没有。
{name:'name', type: 'string'},
{name: 'desc', type: 'string', defaultValue: 'NA'},
{name:'item', fields: [
{name: 'name'},
{name: 'desc'},
]}
在上面我使用名称Item和另一个字段数组。也许这不正确?以上是正确的语法吗?
如果我必须使用HasOne关联,似乎我需要提供关联密钥,但我的数据没有关联密钥。这是一个示例JSON记录。
{"name" : "test item",
"desc" : "my temporary desc"
"item" : [
{ "name" : "item 1",
"desc" : "item 1 desc"
}
]
}
从上面可以看出,我有主要项目“测试项目”,它带有1个孩子,但孩子没有关联ID,即孩子到父母。没有干草ID,它只是一个json复杂的对象。
我真的很挣扎。有什么想法吗?
我使用的是休息代理,读者是'儿子'
有什么想法吗?
有点困惑。 HasOne听起来很理想,但我没有任何关系。提前致谢
答案 0 :(得分:1)
您不需要关联ID。实现你的愿望 你需要提供两种型号。一个用于父母,一个用于" hasone"儿童。您还需要指定"如何"在父模型中查找子/子的数据,如下所示:
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [{name:"fullName",type:"string"}],
hasOne: [{name: 'address', model: 'Address', associationKey: 'address',getterName: 'getAddress', associatedName: 'address'}]
});
Ext.define('Address', {
extend: 'Ext.data.Model',
fields: ['city','state']
});
assosciationKey非常重要,因为它告诉extjs在用户数据中找到Address模型数据的位置。使用getterName属性,您可以指定用于检索孩子的函数。
传递的数据需要看起来像这样:
store.loadRawData({"fullName":"Lucian","address":{"city":"Compton","state":"Ca"}});
看看我制作的这个小提琴: https://jsfiddle.net/1fjyrjn5/2/
也有一些参考资料帮助我解决了这个问题: