【问题标题】:How to get application from view?如何从视图中获取应用程序?
【发布时间】:2013-01-02 10:44:30
【问题描述】:

如何从视图中获取我的应用程序? 例如,假设我有一个应用程序Boo,并且有一个名为Boo.view.Foo.List 的视图,我想在视图List 中获取Boo

编辑:

查看此代码,并查看第 20 行。

Ext.define('Boo.view.Foo.List', {
    extend: 'Ext.panel.Panel',
    model: 'Boo.model.FooModel',
    alias: 'widget.foolist',
    store: 'FooListStore',
    initComponent: function () {
        this.columns = [
            {
                text: "Hello world",
                dataIndex: 'Time',
                flex: 1
            },
            {
                xtype: 'actioncolumn',
                width: 50,
                items: [{
                    icon: 'cancel.png',
                    tooltip: 'Cancel',
                    handler: function (grid, rowIndex, colIndex, col, e) {
                        //Now I need to get the application here, for example with self.getApplication() or something like this.
                    }
                }]
        }];

        this.callParent(arguments);
    }
});

【问题讨论】:

    标签: extjs extjs-mvc


    【解决方案1】:

    您可以使用 appProperty 进行归档

    Ext.application({
        name: 'MyApp',
        appProperty: 'Current'
    });
    

    你现在可以打电话了

    MyApp.Current
    

    从任何地方都会导致 MyApp 命名空间在窗口(全局)范围内抵抗。

    对于 4.1.3 之前的任何版本,将以下行添加到应用程序的 Launch-Method

    YourAppName[this.appProperty] = this;
    

    【讨论】:

    • 我认为这不是让应用程序出现在视图中的好方法。使用这种方法,我可以访问页面中的所有应用程序(考虑我在页面中有多个应用程序),但我想将相关应用程序获取到视图。够清楚吗?
    • @AfshinMehrabani 由于 EventBus 的设计,目前您只能拥有一个应用程序(将在 4.2 中更改)。这不是方法,它是应用于应用程序命名空间的引用。这是获取 Sencha 推荐的应用程序当前实例的方法,而且它也干净且快速。我无法想象任何更快或更清洁的存档方式。
    • @AfshinMehrabani 只有控制器知道它所属的应用程序。目前每个控制器都有一个属性application,您可以使用它。您可以在创建时在视图上设置参考。无论如何,我看不到任何意义,因为您的视图通过其命名空间绑定到应用程序,因此使用 appProperty 将是最简洁的归档方式。
    • 好吧,你是对的,我改变了 ExtJs 的结构并设计了一个新的 EventBus(我已经改变了 ExtJs MVC 方法)。所以现在我在页面中有不止一个应用程序。不过感谢您的帮助,我认为此解决方案目前有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多