Bir projede mağaza içeren bir menüyü kullanıyorum. İşte bir örnek:
Ext.define("Ext.ux.menu.DynamicMenu", {
extend: "Ext.menu.Menu",
alias: 'widget.dynamicmenu',
loaded: false,
loadMsg: 'Loading...',
store: undefined,
icon: '',
constructor: function (config) {
var me = this;
Ext.apply(me, config);
me.callParent();
},
initComponent: function() {
var me = this;
me.callParent(arguments);
me.on('show', me.onMenuLoad, me);
listeners = {
scope: me,
load: me.onLoad,
beforeload: me.onBeforeLoad
};
me.mon(me.store, listeners);
},
onMenuLoad: function() { var me = this; if (!me.store.loaded) me.store.load(); },
onBeforeLoad: function (store) { this.updateMenuItems(false); },
onLoad: function (store, records) { this.updateMenuItems(true, records); },
updateMenuItems: function (loadedState, records) {
var me = this;
me.removeAll();
if (loadedState) {
me.setLoading(false, false);
Ext.Array.each(records, function (record, index, array) {
me.add({
text: record.get('DisplayName'),
data: record,
icon: me.icon
});
});
me.store.loaded = true;
}
else {
me.add({ width: 75, height: 40 });
me.setLoading(me.loadMsg, false);
}
me.loaded = loadedState;
}
});
Ben IIRC eğer sencha forumlarında bu bir tane buldum, ama artık linki bulamıyorum. Simgeler vb. Için ince ayar yaptım, ...
Ext.Array.each üzerinde (kayıtlar, .... Kendi mantığınızı tanımlamanız gerekir, Modelinize bağlı olarak değişir. Ben metin olarak göstermek için hangi GörünenAd. Ben de menü öğesi yapılmış bir veri özelliğinde benim rekorumu stok. orada tamamen özgürsünüz.
İyi şanslar!