我最近与ExtJS协会经历了非常痛苦的学习曲线,并且遇到了一些有用的文章,以及我自己的问题。以下是遇到同样痛苦的人的总结。
ExtJS中的HasMany关联规则
- 除非您,否则请始终将您的代理商放入您的型号,而不是您的商店
有一个很好的理由不[1]
- 如果,请始终要求您的孩子模特
在hasMany关系中使用它们。 [2]
- 如果您想随意加载孩子,请始终使用foreignKey
- 如果您在与父
相同的回复中返回子项,请始终使用associationKey
- 如果您愿意,可以同时使用foreignKey和associationKey
- 始终为您的hasMany关系命名
- 始终在hasMany关系中使用完全限定的模型名称
- 考虑给读者提供一个有意义的名称(“数据”除外)
- 子模型不需要belongsMo关系以使hasMany正常工作
[1]商店将继承其模型的代理,您可以随时覆盖它
[2]为了简化并避免潜在的循环引用,您可以在app.js
中要求它们
http://extjs-tutorials.blogspot.com/2012/05/extjs-hasmany-relationships-rules.html
ExtJS中HasOne和BelongsTo协会的规则
- 将代理放入模型中,除非您有充分的理由不
- 始终使用完全合格的型号名称
- 始终设置getterName
- 始终设置setterName
- 如果在与此对象相同的响应中返回异物,则始终设置associationKey
- 如果要随意加载外来对象
,请始终设置foreignKey
- 考虑将instanceName更改为更短的内容
- 取决于是否加载了外来对象,getter的行为会有所不同
或不。如果已加载,则返回异物。除此以外,
你需要通过一个回调来获得它。
- 如果您计划覆盖此关联,则应设置name属性。
- hasMany无法使用belongsTo关系
- 如果父模型的id字段不是“id”
,请设置primaryKey属性
- 有时您需要使用belongsTo关联的用途或要求。看
但是要循环引用。
- 调用setter()函数
似乎没有设置实例。设置object.belongsToInstance = obj if
调用setter()。
http://extjs-tutorials.blogspot.com/2012/05/extjs-belongsto-association-rules.html
<强>其它强>
- 如果您要将数据应用于网格,请确保使用新商店在网格上调用reconfigure()
- 您的“foreignKey”属性 将作为本地过滤器应用于ExtJS商店;如果您看到通过网络加载的数据,但是
没有显示在您的网格中,请确保您的模型具有foreignKey
值定义为字段,或本地过滤器将排除数据
quiety。为了测试是否是这种情况,挂钩到商店的“负载”
事件并调用store.clearFilters(),并查看您的数据是否显示