如何通过单击按钮重定向到另一个视图(ExtJS 6.2)

时间:2020-10-17 19:14:56

标签: extjs extjs5

我将此按钮类定义如下:

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)?

谢谢。

1 个答案:

答案 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'
}
相关问题