ExtJS 4.1 TreeStore不会加载关联

时间:2012-07-09 13:04:54

标签: extjs extjs4.1

我有一个TreeStore,它工作正常,但每个节点都有一些嵌套数据,所以我为它创建了一个新模型并使用了hasMany关联。但现在商店不再装货了。当我查看load事件中的记录时,它们是空的,但是浏览器告诉我Ajax请求像以前一样提供了所有内容。

这是节点数据来自服务器时的样子:

{
  "path": "KEY_518693",
  "name": "KEY_518693",
  "data": [
    {
      "branch": "KEY_518693",
      "primnav": "ETC",
      "X": 29261,
      "Y": 96492
    },
    ...
  ],
  "children": [ ... ],
  ...
}

这些是我的模型定义:

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'
  }
DataRecord:
{
  extend: 'Ext.data.Model',
  fields: [
    { name: 'branch' , type: 'string'},
    { name: 'primnav', type: 'string' },
    { name: 'X'      , type: 'int' },
    { name: 'Y'      , type: 'int' }
  ]
}

当我删除关联时,树加载没有问题。当我将data添加到字段时,它会被解析到树中,但作为“原始”对象而不是模型实例。

2 个答案:

答案 0 :(得分:2)

请注意,DataRecord没有名为treenode_id的字段 - 因此您的hasMany关联不完整。有关详细信息,请参阅docs

答案 1 :(得分:0)

我的方法有两个问题。

  1. 关联的名称不应该是“数据”,或者根本不会加载记录。
  2. 关联的primaryKey必须设置正确,在我的情况下'branch'是正确的