ExtJS 4.1 TreeStore不';不要用联想来加载

ExtJS 4.1 TreeStore不';不要用联想来加载,extjs,extjs4.1,Extjs,Extjs4.1,我有一个TreeStore,它工作得很好,但是每个节点都有一些嵌套数据,所以我为它建立了一个新模型,并使用了hasMany关联。但现在商店什么也装不下了。当我查看load事件中的记录时,它们是空的,但是浏览器告诉我Ajax请求像以前一样交付了所有内容 这是来自服务器的节点数据的外观: { "path": "KEY_518693", "name": "KEY_518693", "data": [ { "branch": "KEY_518693", "pr

我有一个TreeStore,它工作得很好,但是每个节点都有一些嵌套数据,所以我为它建立了一个新模型,并使用了
hasMany
关联。但现在商店什么也装不下了。当我查看
load
事件中的记录时,它们是空的,但是浏览器告诉我Ajax请求像以前一样交付了所有内容

这是来自服务器的节点数据的外观:

{ "path": "KEY_518693", "name": "KEY_518693", "data": [ { "branch": "KEY_518693", "primnav": "ETC", "X": 29261, "Y": 96492 }, ... ], "children": [ ... ], ... } { “路径”:“键518693”, “名称”:“密钥号518693”, “数据”:[ { “分支机构”:“键518693”, “原始导航”:“等”, “X”:29261, “Y”:96492 }, ... ], “儿童”:[……], ... } 以下是我的模型定义:

TreeNode: { extend : 'Ext.data.Model', requires: [ 'DataRecord', 'Ext.data.association.HasMany' ], fields : [ { name: 'id' , type: 'string', mapping: 'path' }, { name: 'text', type: 'string', mapping: 'name' }, ... ], hasMany : { model: 'DataRecord', name : 'data' } TreeNode: { 扩展:“Ext.data.Model”, 要求:[ “数据记录”, “Ext.data.association.HasMany” ], 字段:[ {name:'id',type:'string',mapping:'path'}, {name:'text',type:'string',mapping:'name'}, ... ], 有很多:{ 型号:“数据记录”, 名称:“数据” } 数据记录: { 扩展:“Ext.data.Model”, 字段:[ {name:'branch',type:'string'}, {name:'primnav',键入:'string'}, {name:'X',type:'int'}, {name:'Y',type:'int'} ] }
当我删除关联时,树加载没有问题。当我向字段添加
数据时,它会被解析到树中,但作为“原始”对象而不是模型实例。

我的方法有两个问题

  • 关联的名称不应为“数据”,否则记录根本无法加载
  • 关联的primaryKey必须设置正确,在我的例子中,
    “分支”
    是正确的

  • 请注意,DataRecord没有名为treenode\u id的字段-因此您的hasMany关联不完整。有关更多信息,请参阅。

    作为解决此问题的第一步,请注意,
    DataRecord
    没有名为
    treenode\u id的字段-因此您的hasMany关联不完整。有关更多信息,请参阅。
    DataRecord
    解决此问题后,我看到了它
    primaryKey:'branch'
    它起作用了。而且我在
    名称
    上有一个错误,它不应该是
    数据
    是的,在设置名称之后,记录再次被加载,在设置primaryKey之后,它们被解析的数据填充。 DataRecord: { extend: 'Ext.data.Model', fields: [ { name: 'branch' , type: 'string'}, { name: 'primnav', type: 'string' }, { name: 'X' , type: 'int' }, { name: 'Y' , type: 'int' } ] }