【发布时间】:2014-07-21 02:33:17
【问题描述】:
我有一个基于 Ember-cli 构建的应用程序。我正在尝试将一种方法注入所有路由、控制器和视图。我知道我可以利用app/utils 目录并将方法的模块导入到调用它的所有文件中,但我希望该方法自动可用。因此,我选择使用初始化程序注入方法。
初始化程序如下所示:
export default {
name: 'injectMethod',
initialize: function(container, app) {
var someFunction = function(message) {
};
app.register('function:main', someFunction);
Em.A(['route', 'controller', 'view']).forEach(function(place) {
app.inject(place, 'someFunction', 'function:main');
});
}
};
这会导致以下错误消息:Uncaught TypeError: undefined is not a function。当我删除 app.inject() 行时,错误消失了。
初始化器在 ember-cli 中的处理方式是否不同和/或上述代码中的某些内容不正确?或者它们是比使用初始化器更好的方法来实现我的目标吗?
【问题讨论】:
-
不知道 ember-cli 是如何工作的......但是这里的应用程序是否在全球范围内可用?
-
ember-cli/es6 模块的目标之一是从全局命名空间中删除所有内容。
App无法在全球范围内使用,因为您正在注册单个模块。