我将此按钮类定义如下:
Controller
我将它与另一个类中定义的其他组件(组成主视图)一起嵌入到Panel视图中。
我的问题是Ext.define('Mine.view.buttons', {
extend: 'Ext.container.Container',
alias: 'widget.MyClass',
requires: [
'Mine.view.Main',
'Mine.view.newDashboard'
],
xtype: 'myclass',
items: [{
xtype: 'button',
html: '<img src=\"../../iDeviceMap.png\" width="76" height="76"/>',
text: '',
width: 76,
height: 76,
handler: function() {
this.redirectTo('main', true);
}]
});
不起作用。如何使用定义按钮的主视图的正确“ this”重定向(例如Mine.view.Main)?
问题2:如何从按钮的处理程序调用父视图(Mine.view.Main)?
谢谢。
答案 0 :(得分:2)
按钮处理程序应该是控制器中的一个函数。然后,控制器中的方法将调用redirectTo方法。
或者您可以在按钮的处理程序中获取面板的控制器,然后从那里调用它。最好在控制器中进行操作,因此,如果您为手机或平板电脑编写不同的视图,则每个视图都可以共享控制器。 / p>
A fiddle showing switching panels
Same fiddle so you can see the hash change
编辑:@ltes-我写了一个小提琴,做了您想要的事情。您问一个关于两种方法的问题。简单查看每种方法的文档对您来说会更快。
Ext.create method Ext.Container down method
您不了解所使用的工具包。 Ext.Create将创建一个新对象this.getView()。down和up()在层次结构中查找以找到组件。如果要更换面板,请在面板上使用remove()和add()方法。您不必在添加时执行Ext.create,只需传递一个配置即可:
panel.add({
xtype: 'panel',
title: 'This is my new panel',
html: 'new panel data'
}