Gib*_*boK 0 extjs sencha-touch sencha-touch-2
我正在使用Sencha Touch 2,0,1.
我需要从Controller中的View中获取一个元素.
目前我使用此方法正确获取View,但我无法在View中获取Item.我没有得到任何错误,只是测试未定义.
有任何想法吗?
在控制器中:
var test = this.getDetailView().items['editButton'];
Run Code Online (Sandbox Code Playgroud)
视图中的代码:
Ext.define('XXX.view.DetailView',{
...
items: [
{
xtype: 'button',
text: 'Edit XXX',
ui: 'custom-btn-dwn-timetable',
itemId: 'editButton'
}
],
...
}
Run Code Online (Sandbox Code Playgroud)
还有其他几种方法可以获得对编辑按钮的引用.您可以将编辑按钮连接为如下所示的参考:
Ext.define('MyApp.Controller', {
extend: 'Ext.app.Controller',
config: {
refs: {
editButton: '#editButton'
}
},
Run Code Online (Sandbox Code Playgroud)
然后在您的控制器中,您可以调用自动生成的getter this.getEditButton()来获取实际的编辑按钮组件.
您可以做的另一件事是将编辑按钮保存为视图中的实例变量,如下所示:
Ext.define('XXX.view.DetailView',{
...
items: [
this.editButton = Ext.widget{(
xtype: 'button',
text: 'Edit XXX',
ui: 'custom-btn-dwn-timetable',
itemId: 'editButton'
)}
],
...
}
Run Code Online (Sandbox Code Playgroud)
所以现在要访问您必须执行的控制器中的按钮: this.getDetailView().editButton
一般来说,如果一个元素是你经常访问的东西,你应该有一个保存的引用,而不是查询DOM(以避免不必要的性能损失).由于执行堆栈,使用Ext.getCmp()的速度也较慢(每次只需要通过ComponentManager获取引用).