我应该在哪里定义 ExtJS 4 MVC 中的全局函数?

Posted

技术标签:

【中文标题】我应该在哪里定义 ExtJS 4 MVC 中的全局函数?【英文标题】:Where should I define global functions in ExtJS 4 MVC? 【发布时间】:2012-03-04 21:50:44 【问题描述】:

我需要定义一些可以在我的应用程序中随处调用的函数。 实现这一目标的最佳方法是什么?

【问题讨论】:

【参考方案1】:

就个人而言,为了尽可能保持 EXT-MVC,我有一个包含静态方法的 Utilities 类。这可能像任何其他类一样需要维护适当的依赖关系。这也确保了方法在 EXT 环境中运行,因此所有 EXT 都可用。

Ext.define('MyApp.Utilities', 
    statics: 
        foo: function (a, b) 
            return a + b;
        
    
);

Ext.define('MyApp.MyView', 
    extends: 'Ext.panel.Panel',
    requires: ['MyApp.Utilities'],

    initComponent: function () 
        MyApp.Utilities.foo(1, 2);
    
);

【讨论】:

你能提供一些你的想法的小例子吗? 不应该是Utilities.foo调用MyApp.Utilities.foo吗? 这就是我在最后一分钟更改命名空间的结果。已修复,谢谢。 很好的答案。作为 Sencha Architect 的附注,您可以将实用程序类 JS 文件作为资源添加到项目中。 不想退货怎么办??【参考方案2】:

除了@David Kanarek 的静态方法之外,另一种方法是定义一个单例。代码:

Ext.define('MyApp.Utilities2', 
    singleton: true,
    global_var2: 'Hello World',
    foo2: function (a, b) 
        return a + b;
    ,
);

我在这里创建了一个小提琴: https://fiddle.sencha.com/#fiddle/qu1

静态方法和单例方法的区别在于

MyApp.Utilities2(单例方法)是一个对象, MyApp.Utilities(静态方法)是一个类。

因此,为方便起见,是引用类本身还是引用该类的一个实例取决于您。

【讨论】:

以上是关于我应该在哪里定义 ExtJS 4 MVC 中的全局函数?的主要内容,如果未能解决你的问题,请参考以下文章

ExtJs 4.2 使用 MVC 问题扩展自定义模型

MVC 4 - 在哪里保留业务逻辑

将函数中配置的 html 添加到 ExtJS 4 MVC

Extjs mvc 将记录添加到网格面板

ExtJS 4 - 在 MVC 架构中重用组件

ExtJs 4 MVC 应用架构:如何引用子文件夹中的文件