2012-12-13 95 views
4

我在創建多對多關聯時遇到了一些問題。因爲它不知道。我嘗試以這種方式建立關係。但我不確定。任何人都可以幫助我?我該怎麼做?。這裏是我的代碼Extjs 4.1多對多模型關聯

Ext.define('Ext4Example.model.Category', { 
extend : 'Ext.data.Model', 
alias  : 'widget.categoryModel', 
idProperty: 'id',  
fields: [ 
    {name:'id',    mapping:'id',    type:'int'}, 
    {name:'name',   mapping:'name',    type:'string'} 
], 
proxy: { 
    type: 'ajax', 
    noCache: false, 
    api: { 
     create : '${createLink(controller:'category', action: 'create')}', 
     read : '${createLink(controller:'category', action: 'read')}', 
     update : '${createLink(controller:'category', action: 'update')}', 
     destroy : '${createLink(controller:'category', action: 'destroy')}' 
    }, 
    actionMethods: { 
     create : 'POST', 
     read : 'GET', 
     update : 'PUT', 
     destroy : 'DELETE'    
    },   
    reader: { 
     type : 'json', 
     root : 'data', 
     totalProperty : 'total', 
     successProperty : 'success', 
     messageProperty : 'message', 
     implicitIncludes: true 
    }, 
    writer: { 
     type  : 'json', 
     root  : 'data', 
     writeAllFields: true 
    }, 
    simpleSortMode: true 
}, 
hasMany: [{model: 'Manufacturer', name: 'manufacturers'}] 

});

第二模型是這裏

Ext.define('Ext4Example.model.Manufacturer', { 
extend : 'Ext.data.Model', 
alias  : 'widget.manufacturerModel', 
idProperty: 'id',  
fields: [ 
    {name:'id',    mapping:'id',    type:'int'}, 
    {name:'name',   mapping:'name',    type:'string'} 
], 
proxy: { 
    type: 'ajax', 
    noCache: false, 
    api: { 
     create : '${createLink(controller:'manufacturer', action: 'create')}', 
     read : '${createLink(controller:'manufacturer', action: 'read')}', 
     update : '${createLink(controller:'manufacturer', action: 'update')}', 
     destroy : '${createLink(controller:'manufacturer', action: 'destroy')}' 
    }, 
    actionMethods: { 
     create : 'POST', 
     read : 'GET', 
     update : 'PUT', 
     destroy : 'DELETE'    
    },   
    reader: { 
     type : 'json', 
     root : 'data', 
     totalProperty : 'total', 
     successProperty : 'success', 
     messageProperty : 'message', 
     implicitIncludes: true 
    }, 
    writer: { 
     type  : 'json', 
     root  : 'data', 
     writeAllFields: true 
    }, 
    simpleSortMode: true 
}, 
hasMany: [{model: 'Category', name: 'categories'}] 

});

回答

2

首先,請描述什麼是不工作? hasMany關係創建的神奇方法在模型中不可用嗎?當您調用魔術方法時,數據是否無法加載?請進一步描述您遇到的問題。

也許你會覺得這篇博文有用嗎? http://extjs-tutorials.blogspot.com/2012/05/extjs-hasmany-relationships-rules.html

從博客發佈一些重要的提示(在情況下,鏈接死在某個時候)

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

*商店將繼承它的模型的代理,你可以隨時覆蓋它

**爲了方便,並避免潛在的循環引用,你可以要求他們在app.js

來源:Neil McGuigan(http://www.blogger.com/profile/14122981831780837323)