如何在没有循环引用的控制器之间共享对象/方法

How to share objects/methods between controllers without circular references?

本文关键字:之间 控制器 共享 对象 方法 引用 循环      更新时间:2023-09-26

很简单的问题。目前,当我需要在整个应用程序中访问对象的方法时,我在app.js

中这样做
Ext.define('Utils', {
    statics: {
        myMethod: function() {
            return 'myResult'; 
        }
    }
});

这是有效的,但是当我构建应用程序时,我得到一个关于循环引用的警告(app.js当然需要所有其他控制器类,但随后这些类会引用回app.js)。

我想使用一个包含.js文件的包,其中包含所有对象/方法,但有时,在这些方法中,我需要访问Ext命名空间,因此这将不起作用。

有更好的方法吗?

谢谢!

不应该在app.js中定义Utils类。每个Ext.define语句应该在它自己的文件中。此外,类名应该以你的应用程序名称作为前缀。

Ext.define('MyApp.Utils', {
    statics: {
        myMethod: function() {
            return 'myResult'; 
        }
    }
});
因此

应该在文件app/Utils.js中找到。当你将源代码编译成编译后的app.js时,Sencha Cmd将在最终文件中处理正确的顺序。requiresuses指令给你足够的灵活性来定义类之间的依赖关系。

阅读所有关于MVC的文档来获得一个清晰的理解