Я использую простой TreeStore без прокси для создания моего меню.Вот простой пример:
Store:
Ext.define('LT.store.MnuApplication', {
extend: 'Ext.data.TreeStore',
root: {
expanded: true,
children: [{
text: "Lists",
expanded: true,
children: [{
text: "Countries",
leaf: true,
}]
}]
}
});
В контроллере я добавил слушателя к событию "click":
Контроллер:
init: function() {
this.control({
/**
* Catch the treepanels in the menu accordion
*/
'menu-main treepanel': {
itemclick: function (view, record, item, index, event){
var clickedMnuNode = record;
var tabPanel = this.getTabPanel();
// Open tab only if the menu node is a leaf node
if (clickedMnuNode.isLeaf()) {
tabPanel.add({
xtype: clickedMnuNode.raw.loadTabComponent
}).show();
}
}
}
});
this.callParent();
}
А теперь к моей проблеме с этим решением: я хочу определить в TreeStore, какие действия должен выполнять контроллер - особенно какой компонент должен быть загружен.
Например, мне бы хотелось, чтобы TreeStore выглядел следующим образом:
Ext.define('LT.store.MnuApplication', {
extend: 'Ext.data.TreeStore',
root: {
expanded: true,
children: [{
text: "Lists",
expanded: true,
children: [{
text: "Countries",
leaf: true,
loadComponent: 'country-list',
loadTarget: 'tabPanel'
}]
}]
}
});
Как вы можете видеть, я добавил два новых параметра в Tree Leaf.Теперь я не могу получить доступ к этим наборам данных с помощью метода записи "RAW".Но это не очень хорошее решение - не так ли?
Так у кого-нибудь есть идея, как передать дополнительные параметры (например, "loadComponent" или "loadTaget") из моего TreeStore в контроллер?
Спасибо заранее и ура, Майкл