【发布时间】:2015-06-10 10:51:18
【问题描述】:
(快照是here了解更多详情) 我得到了这个:主视图中的一个组合框和 3 个使用组合框加载其商店的选项卡。
文件Mathrice*.js 描述了整个视图,而其他文件(在目录中)是选项卡。
我的问题是是否有办法在标签控制器中获取组合框
【问题讨论】:
-
您当前使用的是哪个版本的 Ext? 5 还是 4?
(快照是here了解更多详情) 我得到了这个:主视图中的一个组合框和 3 个使用组合框加载其商店的选项卡。
文件Mathrice*.js 描述了整个视图,而其他文件(在目录中)是选项卡。
我的问题是是否有办法在标签控制器中获取组合框
【问题讨论】:
如果您的组合框具有如下所示的 ID
Ext.create('Ext.form.ComboBox', {
id: 'mycombobox',
renderTo: Ext.getBody()
});
然后你可以在控制器中的任何地方获取组合框组件:
var cb = Ext.getCmp("mycombobox")
//note the name is the id of the combobox
//here cb will be the combobox instance that you need.
【讨论】:
解决方案: 只需要了解 viewModel 在 sencha 中的工作原理(cf sencha doc)
在 标签的控制器中,我尝试获取包含 combobox 的 父控制器,然后像在那个视图中一样播放. 在一个标签的控制器下方
,mathrice : this.getViewModel().getParent().getView().getController()
,init:function () {
console.log(" VPN Tab Controller");
var me=this
,selectALab = me.mathrice.lookupReference('comboboxLab')
}
【讨论】:
如果组合和选项卡位于不同的控制器下,则选项卡控制器无需了解组合。当您感兴趣的组合更改发生时,您希望组合的控制器触发一个事件。选项卡控制器应该监听这个事件并采取行动。这种方法减少了耦合并使您的应用更易于维护。
【讨论】: