【问题标题】:ExtJS 4.1 TreeStore doesn't load with associationExtJS 4.1 TreeStore 不加载关联
【发布时间】:2012-07-08 21:15:11
【问题描述】:

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

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

{ "路径": "KEY_518693", "名称": "KEY_518693", “数据”: [ { “分支”:“KEY_518693”, "primnav": "ETC", “X”:29261, “Y”:96492 }, ... ], “孩子们”: [ ... ], ... }

这些是我的模型定义:

树节点: { 扩展:'Ext.data.Model', 要求:[ '数据记录', 'Ext.data.association.HasMany' ], 字段:[ {名称:'id',类型:'string',映射:'path'}, {名称:'文本',类型:'字符串',映射:'名称'}, ... ], 有很多 : { 模型:'数据记录', 名称:'数据' } 数据记录: { 扩展:'Ext.data.Model', 字段:[ {名称:'分支',类型:'字符串'}, {名称:'primnav',类型:'string'}, {名称:'X',类型:'int'}, {名称:'Y',类型:'int'} ] }

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

【问题讨论】:

  • 作为解决此问题的第一步,请注意 DataRecord 没有名为 treenode_id 的字段 - 因此您的 hasMany 关联不完整。请参阅docs 了解更多信息。
  • 哦,是的,我看到了。在我制作primaryKey: 'branch' 之后,它起作用了。我对name 也有错误,它不应该是data
  • 是的,设置名称后,记录再次加载,设置primaryKey后填充解析数据。

标签: extjs extjs4.1


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我的方法有两个问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      相关资源
      最近更新 更多