2012-11-19 60 views

回答

26

我最近經歷了一個非常痛苦的學習曲線與ExtJS協會,並遇到了一些有用的文章,以及我自己的陷阱。以下是遇到同樣痛苦的人的總結。

規則的hasMany協會在ExtJS的

  • 始終把你的代理服務器在您的模型,不是你的房屋,除非你 有一個很好的理由不[1]
  • 始終要求你的孩子模型如果 在hasMany關係中使用它們。 [2]
  • ,如果你想你可以隨意加載孩子始終使用外鍵
  • 始終使用associationKey如果你作爲父母相同的響應返回兒童
  • ,如果你喜歡
  • 可以同時使用外鍵和associationKey
  • 始終命名的hasMany關係
  • 始終使用完全合格的型號名稱在你的hasMany關係
  • 考慮給讀者根有意義的名稱(不是「數據」等)
  • 子模型做不需要屬於關聯關係的的hasMany工作

[1]這家商店將繼承其模型的代理,你可以隨時覆蓋它
[2]爲了方便,並避免潛在的循環引用,你可以要求他們在應用程序。JS

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

規則HasOne和屬於關聯協會在ExtJS的

  • 把代理模型,除非你有一個很好的理由不
  • 始終使用完全合格的模型名稱
  • 始終設置getterName
  • 始終設置setterName
  • 始終將associationKey,如果異物是在爲這個目標
  • 如果你想隨意加載異物
  • 考慮更改實例名的東西短
  • 始終將外鍵,相同的響應返回
  • 根據異物是否加載 或不是,吸氣劑的行爲有所不同。如果它被加載,則返回異物。否則, 你需要通過回調來獲取它。
  • 如果您打算重寫此關聯,則應該設置name屬性。
  • 你並不需要一個屬於關聯關係的的hasMany工作
  • 將PrimaryKey屬性如果父模型的id字段是不是「ID」
  • 有時你需要使用用途或要求對屬於關聯關聯。儘管如此,請注意看 的循環引用。
  • 調用setter()函數確實沒有設置實例 。設置object.belongsToInstance = obj如果 調用setter()。

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

其它

  • 如果你申請你的數據網格,請確保您在使用新的存儲
  • 呼籲電網重新配置()你「外鍵「屬性作爲本地過濾器應用於ExtJS存儲;如果您看到通過網絡加載的數據,但在網格中未顯示 ,請確保您的模型將foreignKey 值定義爲字段,否則本地過濾器將排除數據 quiety。要測試是否屬於這種情況,請將商店的「加載」 事件並調用store.clearFilters(),並查看您的數據是否顯示爲
+3

+1 for'requires:[...]'as我驚訝地發現這是我的問題。真的讓ExtJs厭煩了! – HDave