2011-04-26 67 views
15

我剛剛下載了ExtJs 4的最終版本,我試圖用新模型方法實現一些東西。如何從ExtJs中存儲嵌套模型4

例如我有一個名爲SetupModel的模型,它有2個嵌套模型Users,Reports。 我創建了新的商店,並設置了Store = SetupModel的Model屬性。

問題是 - 數據加載到商店後,如何訪問我的嵌套屬性?

我需要類似myStore.data.Users(),但不正確。

有什麼想法?

回答

22

定義模型時,需要提供與嵌套模型的必要關聯。因爲你沒有提供你的代碼。這裏有一個例子:

我的產品型號:

Product = Ext.define('Product',{ 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'id', type: 'int'}, 
     {name: 'user_id', type: 'int'}, 
     {name: 'name', type: 'string'}, 
     {name: 'price', type: 'float'} 
    ], 
    proxy: { 
     type: 'localstorage', 
     id: 'products' 
    } 
}); 

我的用戶模型:

User = Ext.define('User',{ 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'id',  type: 'int'}, 
     {name: 'name',  type: 'string'}, 
     {name: 'gender', type: 'string'}, 
     {name: 'username', type: 'string'} 
    ], 
    associations: [ 
     {type: 'hasMany', model: 'Product', name: 'products'} 
    ], 
    proxy: { 
     type: 'localstorage', 
     id : 'users' 
    } 
}); 

現在,如果你有一個產品用戶模型的實例。這裏是你如何可以訪問產品:

var productStore = user.products(); 

注意user.products()返回Ext.data.Store。現在,您可以遍歷或過濾或找到您的產品記錄。下面是我得到了我的第一個產品的名稱:

productStore.getAt(0).get('name'); 
+0

親愛的阿卜杜勒,如果我們想做出不從服務器第二個請求嵌套的GridPanel,是可以用這種方法? – 2013-09-11 21:33:55

+0

嗨OğuzÇelikdemir,不知道你是如何需要它,你可以解釋,如果你想擴大一排或什麼? – 2013-09-12 20:38:16

+0

@Our你可以在一個json中獲取嵌套數據,並在hasMany定義中爲你的關聯指定「associatedKey」。 – 2014-03-19 08:20:56