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

Javascript 如何在没有循环引用的控制器之间共享对象/方法?,javascript,extjs4,Javascript,Extjs4,这个问题很简单。目前,当我需要在大多数应用程序中访问对象的方法时,我会在app.js Ext.define('Utils', { statics: { myMethod: function() { return 'myResult'; } } }); 这是可行的,但当我构建应用程序时,我会收到一条关于循环引用的警告(app.js当然需要所有其他控制器类,但随后说的类会引用app.js) 我曾想过使用一个包,其中包含一个包

这个问题很简单。目前,当我需要在大多数应用程序中访问对象的方法时,我会在
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将在最终文件中考虑正确的顺序。
需要
使用
指令,这为定义类之间的依赖关系提供了足够的灵活性


阅读所有关于MVC的文档以获得清晰的理解。

使用提供商,例如服务:@sgroves有任何示例吗?没有。这就是为什么这是一个评论。你可以在谷歌上搜索示例(或查看链接)。@sgroves angular在这里没有标记。Works wonder。我想这就是为什么选择一个有意义的应用程序名称很重要,但不要太长。