2014-05-19 59 views
0

模型我有以下JSON結構:EXTJS形式結合到具有關聯

userAuth 
----userAccount -- hasOne 
----userAccountDetails -- hasMany 

我要顯示的形式示出了從USERAUTH和userAccount數據,然後與行的每一行的柵格在userAccountDetails

這裏是USERAUTH型號代碼:

Ext.define('xxxx.model.UserAuth', { 
    extend: 'Ext.data.Model', 

    fields: [ 
     { name: 'id' }, 
     { name: 'email' }, 
     { name: 'userName' }, 
     { name: 'refIdStr' }, 
     { name: 'displayName' }, 
     { name: 'modifiedDate', type: 'date', } 
    ], 

    requires: [ 
     'xxxx.model.UserAccount', 
     'xxxx.model.UserAuthDetails', 
    ], 

    hasMany: [ 
     { 
      model: 'xxxx.model.UserAuthDetails', 
      name: 'authDetails', 
      foreignKey: 'userAuthId', 
      associationKey: 'userAuthDetails', 

     } 
    ], 

    hasOne: [ 
     { 
      model: 'xxxx.model.UserAccount', 
      name: 'userAcount', 
      associationKey: 'userAccount', 
      getterName: 'getUserAccount', 
      setterName: 'setUserAccount', 
     } 
    ], 

    proxy: { 
     type: 'ajax', 
     startParam: 'skip', 
     limitParam: 'take', 
     url: settings.ApiUrl + '/model/UserAuth/?format=json', 
     baseParams: { 
      skip: '0', 
      take: '10', 
     }, 
     reader: { 
      type: 'json', 
      root: 'results', 
      successProperty: 'success', 
      totalProperty: 'totalCount' 
     } 
    } 
}); 

而且userAccount模型

Ext.define('xxxx.model.UserAccount', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'username' }, 
     { name: 'id' }, 
     { name: 'name' }, 
     { name: 'email' }, 
     { name: 'slug' }, 
     { name: 'facebookId' } 
    ], 

    belongsTo: 'xxxx.model.UserAuth', 

    proxy: { 
     type: 'ajax', 
     startParam: 'skip', 
     limitParam: 'take', 
     url: settings.ApiUrl + '/model/UserAccount/?format=json', 
     baseParams: { 
      skip: '0', 
      take: '10', 
     }, 
     reader: { 
      type: 'json', 
      root: 'results', 
      successProperty: 'success', 
      totalProperty: 'totalCount' 
     } 
    } 
}); 

和userAuthDetails:

Ext.define('xxxx.model.UserAuthDetails', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'id' }, 
     { name: 'userAuthId' }, 
     { name: 'provider' }, 
     { name: 'userId' }, 
     { name: 'userName' }, 
     { name: 'displayName' }, 
     { name: 'firstName' }, 
     { name: 'lastName' }, 
     { name: 'email' }, 
     { name: 'modifiedDate' }, 
     { name: 'provider' }, 
    ], 

    belongsTo: [ 
     { 
      model: 'xxxx.model.UserAuth', 
      isntanceName: 'userAuth', 
      getterName: 'getUserAuthDetails', 
      setterName: 'setUserAuthDetails', 
      associationKey: 'userAuthDetails' 
     } 
    ], 

    proxy: { 
     type: 'ajax', 
     startParam: 'skip', 
     limitParam: 'take', 
     url: settings.ApiUrl + '/model/UserAuthDetails/?format=json', 
     baseParams: { 
      skip: '0', 
      take: '10', 
     }, 
     reader: { 
      type: 'json', 
      root: 'results', 
      successProperty: 'success', 
      totalProperty: 'totalCount' 
     } 
    } 
}); 

加載店工作和協會工作 - 當我打電話record.getUserAccount().get('email')返回結果是什麼,我期望 - 所以一切工作正常。

現在,我的問題是 - 我該如何將這些數據轉換成上述形式?

我試圖做喜歡的東西:

{ 
    xtype: 'textfield', 
    fieldLabel: 'username', 
    allowBlank: false, 
    maxLength: 100, 
    name: 'userAccount.userName' 
} 

思維聯想的名字可能是一個很好的提示它 - 但是,這並不從最頂部的模型工作...

數據( userAuth)工作正常 - 我似乎無法將hasOne 拖入表單中。

我還沒有嘗試過的userAuthDetails結合網格又讓人懷疑將同樣充滿挑戰

有沒有人成功地得到這個工作?我只是沿着協會的路線走,因爲我認爲這會讓這類東西變得更清潔/更簡單!

[編輯]

放棄努力,我很高興爲目前僅適用於讀取該數據與表單做到這一點。我現在試圖在行擴展器的xtemplate中顯示這些數據。

我試過以下,但它不工作!

plugins: [ 
    { 
     ptype: 'rowexpander', 
     rowBodyTpl: [ 
      '<p><b>Username:</b> {userName}</p>', 
      '<p><b>Email:</b> {userAccount.email}</p>', 
      '<tpl for="userAuthDetails">', 
       '<p>{provider}</p>', 
      '</tpl>' 
     ] 
    }], 

我需要做什麼樣的伏都教工作?根本不明顯!

ATM我想我不會再使用ExtJs--我發現自己處於最近這樣的太多黑洞中,公然應該按照您期望的方式工作 - 只是使用Google搜索顯示每個人都期望這上班。我已經使用了ExtJs多年,但我認爲現在是時候終於承認有更好的js應用程序框架了。

回答

1

不幸的是,沒有自動配置的唯一方法。如果您查看loadRecord源代碼,您會發現它只是從傳遞的記錄中獲取數據,並在表單上調用setValues

您需要重寫loadRecord方法以從關聯的記錄中挖掘所需的值。

+0

這是一個真正的恥辱 - 我不是什麼所有這些協會的重點是那麼! – iwayneo

+0

那麼,按其本性形式不是形式顯示分層數據和協會在其他地方使用。但是,我同意可以提供一些映射以便它能夠工作。 – Saki

+0

如何在模板中顯示此數據? – iwayneo