ExtJS 4.1 TreeStore 未加载关联

标签 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 添加到字段时,它会被解析到树中,但作为“原始”对象而不是模型实例。

最佳答案

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

关于ExtJS 4.1 TreeStore 未加载关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395628/

相关文章:

css - 在 ExtJs 的 ComboBox 中为 selectedItem 自定义 CSS

javascript - Extjs - 在 Model.save() 中重试 API 请求

javascript - 将拖放代理置于指针的中心

javascript - 如何在 pagingtoolbar Ext js 4.2 中获取检查的行数?

javascript - 如何在 Extjs 4 中使用嵌套的 JSON 填充表单

javascript - ExtJs - 检查 Ext.Array 是否为空的最佳方法?

javascript - ExtJS 以平铺方式打开新窗口

extjs - 如何禁用单行的操作列项目?

javascript - ExtJS 窗口 setActive() 未按预期工作

extjs - 扩展的 ExtJS 类找不到自定义监听器函数 - "oe is undefined"