如何从按钮点击重定向到另一个视图(ExtJS 6.2)

How to redirect to another view from button click (ExtJS 6.2)

我有这个按钮 class 定义如下:

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

    }]
});

我将其与另一个 class 中定义的其他组件(组成主视图)一起嵌入到面板视图中。 我的问题是 this.redirectTo('main', true); 不起作用。如何使用定义按钮的主视图的右侧“this”进行重定向(比如 Mine.view.Main)? Q2:如何从按钮的处理程序调用父视图(Mine.view.Main)?

谢谢。

按钮处理程序应该是控制器中的一个函数。控制器中的方法,然后调用 redirectTo 方法。

或者您可以在按钮的处理程序中获取面板的控制器并从那里调用它....最好在控制器中执行此操作,因此如果您为 phone 或平板电脑的每个视图编写不同的视图可以共享控制器。

A fiddle showing switching panels

Same fiddle so you can see the hash change

编辑:@ltes - 我写了一个 fiddle 做了你想让它做的事。你问了一个关于两种方法的问题。简单地查看这些方法中的每一种方法的文档会更快。

Ext.create method Ext.Container down method

您不了解您正在使用的工具包。 Ext.Create 将创建一个新对象 this.getView()。向下和向上() 在层次结构中查找组件。如果要替换面板,请在面板上使用 remove() 和 add() 方法。你不必在添加时执行 Ext.create 你可以简单地传递一个配置:

panel.add({
    xtype: 'panel',
    title: 'This is my new panel',
    html: 'new panel data'
}