为什么我的ExtJS商店协会没有工作

jve*_*ema 10 extjs associations

我有问题.我想使用漂亮的ExtJS关联,但它们无法正常工作.

问题:

  • 模型中没有关联
  • 加载后没有数据显示

需要注意的怪癖是什么?

jve*_*ema 27

我最近与ExtJS协会经历了一个非常痛苦的学习曲线,并且遇到了一些有用的文章,以及我自己的陷阱.以下是遇到同样痛苦的人的总结.

ExtJS中HasMany关联的规则

  • 除非你有充分的理由不去[1],否则总是把你的代理放在你的模特而不是你的商店里
  • 如果在hasMany关系中使用它们,则始终需要您的子模型.[2]
  • 如果要随意加载子项,请始终使用foreignKey
  • 如果您在与父项相同的响应中返回子项,请始终使用associationKey
  • 如果您愿意,可以同时使用foreignKey和associationKey
  • 始终为您的hasMany关系命名
  • 始终在hasMany关系中使用完全限定的模型名称
  • 考虑给读者root一个有意义的名字(除了"数据")
  • 子模型不需要belongsMo关系来使hasMany工作

[1]商店将继承其模型的代理,您可以随时覆盖它
[2]为了简化,并避免潜在的循环引用,您可以在app.js中要求它们

http://extjs-tutorials.blogspot.com/2012/05/extjs-hasmany-relationships-rules.html

ExtOS中HasOne和BelongsTo协会的规则

  • 将代理放在模型中,除非你有充分的理由不这样做
  • 始终使用完全合格的型号名称
  • 始终设置getterName
  • 始终设置setterName
  • 如果在与此对象相同的响应中返回异物,则始终设置associationKey
  • 如果要随意加载外来对象,请始终设置foreignKey
  • 考虑将instanceName更改为更短的内容
  • 取决于是否加载了外来对象,getter的行为会有所不同.如果已加载,则返回异物.否则,您需要传入一个回调来获取它.
  • 如果您计划覆盖此关联,则应设置name属性.
  • 您不需要belongsTo关系来使hasMany工作
  • 如果父模型的id字段不是"id",则设置primaryKey属性
  • 有时您需要使用belongsTo关联的用途或要求.请注意循环引用.
  • 调用setter()函数似乎没有设置实例.如果调用setter(),则设置object.belongsToInstance = obj.

http://extjs-tutorials.blogspot.com/2012/05/extjs-belongsto-association-rules.html

杂项

  • 如果要将数据应用于网格,请确保使用新存储在网格上调用reconfigure()
  • 您的"foreignKey"属性作为ExtJS商店的本地过滤器应用; 如果你看到的数据加载在网络上,但在你的网格没有显示,请确保您的模型定义为一个字段,或本地过滤器将quiety排除数据的外键的值.要测试是否是这种情况,请挂钩商店的"load"事件并调用store.clearFilters(),看看您的数据是否显示

  • +1表示`需要:[...]`因为我惊呆了,发现这是我的问题.真是激怒了ExtJs! (3认同)