如何在EXTJS中获取MAIN控制器的引用?

l0oc07j2  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(148)

如何在EXTJS中获取控制器的引用?
Sencha 模板为现代应用程序生成主视图,如下所示:
第一个
我不明白的第一件事是有两个控制器(mainphone-main)。我想phone-main就像它的名字暗示的电话。但现代工具包不就是电话吗?在这两个容器中的哪一个放置用户定义的函数?
无论如何,我在main控制器中有一些函数,我想获得该控制器的引用,因为我想从另一个控制器调用这些函数。我试图获得主控制器的引用,如:

aa = Ext.getCmp('main');
ref = aa.getController();

但这给了我对phone-main而不是main控制器的引用。
我也试探着:

ref = MyApp.app.getController('main');

但是,这根本不起作用。同样的情况是:

ref = MyApp.app.getController('MyApp.view.main.MainController');
7ivaypg9

7ivaypg91#

在此示例中,将根据设备(电话或台式机)连接相应的ViewController:

Ext.define('MyApp.view.main.MainController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.main',
    fooProperty: 'fooMainValue'

});
Ext.define('MyApp.view.main.PhoneMainController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.phone-main',
    fooProperty: 'fooPhoneValue'

});

Ext.define('MyApp.view.main.Main', {
    extend: 'Ext.navigation.View',

    xtype: 'main',
    id: 'main',
    controller: 'main',
    platformConfig: {
        phone: {
            controller: 'phone-main'
        }
    },
    items: [{
        title: 'First',
        items: [{
            xtype: 'button',
            text: 'Click me',
            handler: function () {
                console.log(this.up('main').getController().fooProperty);
            }
        }]
    }]
});

Ext.create('MyApp.view.main.Main', {
    renderTo: document.body,
    height: 200
});

只需在chrome开发者工具中单击“切换设备工具栏”,取决于设备将打印'fooMainValue'或'fooPhoneValue'属性。更多内容请阅读此处。“在这两个容器中的哪一个中放置用户定义的函数?”=〉这意味着您可以为电话和桌面设备使用两个不同的控制器,或者您可以创建一个基类ViewController,并使用自定义逻辑扩展桌面和电话控制器,以便不同的设备。常规方法/属性将放置在父(基)控制器中,自定义方法/属性将放置在子控制器类中。
“但不是现代工具包的手机?”=〉嗯.. AFAIK他们试图开发一些新的东西..阅读这从前内部人士.

相关问题