2015-05-25 70 views
1

我想了解Ext.data.field.Field.reference配置是做什麼的,因爲名稱有點尷尬。我正在試圖做的是有一個看起來像這樣的數據:ExtJS 5:瞭解Ext.data.field.Field.reference配置屬性

[{ 
    name: 'Mulder', 
    state: 'Virginia', 
    friends: [{ 
    name: 'Scully', 
    type: 'partner' 
    }, { 
    name: 'Smoking Man', 
    type: 'dad' 
    }] 
}] 

和使用模型的消化它,所以我創建它們是這樣的:

Ext.define('Agent', { 
    extend: 'Ext.data.Model', 
    fields: ['name', 'state'] 
}); 
Ext.define('Relationship', { 
    extend: 'Ext.data.Model', 
    fields: ['name', 'type', { 
    name: 'agentId', 
    reference: { 
     type: 'Agent', 
     inverse: { 
     role: 'friends' 
     } 
    } 
    }] 
}); 

我之所以逆爲對象關係模型是因爲this thread ...基本上,我希望我的模型命名與檢索到的數據有所不同,所以我不希望它在數據中被稱爲Relationship和參考friends,但是所有這些都不是Friend模型沒有記錄。我解決了之後,我創造了我的商店(test Fiddle here):

Ext.create('Ext.data.Store', { 
    model: 'Agent', 
    autoLoad: true, 
    proxy: { 
    type: 'ajax', 
    url: 'data3.json', 
    reader: { 
     type: 'json' 
    } 
    }, 
    listeners: { 
    load: function(store) { 
     // outputs friends as a function and getFriends as null 
     console.log('Agent', store.first().friends, store.first().getFriends); 
    } 
    } 
}); 

所以我想要做的是有我的朋友getter方法被調用getFriends代替friends,但是從看文檔,我我不完全確定用什麼配置來指定這個。我嘗試了那些看起來像可能的候選人(關聯,角色和逆向)。在這一點上,我非常確定這是我在逆向物體中設置的一個屬性,但是看到這是無證的,我不知道。

此前,在版本4中,我們有hasMany的關聯,但似乎被推到/未記錄以代替reference的方式。我們將完成我想要加入這個到Agent模型做(請參閱Fiddle的工作爲例):

hasMany: [{ 
    model: 'RelationshipHasMany', 
    associationKey: 'friends', 
    name: 'getFriends' 
}] 

有沒有人對如何命名我的getter任何見解?也許你也可以解釋屬性associationrole是做什麼的。

回答

2

你想用getterName

inverse: { 
    role: 'friends', 
    getterName: 'getFriends' 
} 
+0

真棒,是的,就想通了這一點,以及...感謝埃文!這是文檔中的任何地方,還是正在處理?另外,會有很多事情要走了嗎? – incutonez