ExtJS:具有 child 的有效模型,不能使用 HasOne,因为我没有关联 ID?

ExtJS: Vallid model with child, can't use HasOne as I have no association ID?

这是一个有效的模型吗?我好像没有工作?也许我必须使用 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" 
          } 
         ] 
 }

正如您从上面看到的,我有主要项目 "test item",它以 1 child 到达,但是 child 没有关联 ID,即 child 到 parent。没有干草 ID,它只是一个 json 复合体 object.

我真的很纠结这个。有什么想法吗?

我正在使用休息代理并且 reader 是 'son'

有什么想法吗?

有点迷糊。 HasOne 听起来确实很理想,但我在那里没有关系。

提前致谢

您不需要协会 ID。为了实现你的愿望 你需要提供两个模型。一份给parent,一份给"hasone" children。您还需要指定 "how" 以在 parent 模型中查找 child /children 的数据,如下所示:

 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']
});

associationKey 非常重要,因为它告诉 extjs 在用户数据中在哪里找到 Address 模型的数据。使用 getterName 属性,您可以指定用于检索 child 的函数。

传递的数据需要看起来像这样:

store.loadRawData({"fullName":"Lucian","address":{"city":"Compton","state":"Ca"}});

看看我做的这个工作 fiddle: https://jsfiddle.net/1fjyrjn5/2/

还有一些参考资料帮助我解决了这个问题:

https://www.sencha.com/forum/showthread.php?237602-Ext.data.association.HasOne-getting-started-example

Extjs hasone association