Dun*_*ker 4 ember.js ember-cli
我有一个建立在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');
});
}
};
Run Code Online (Sandbox Code Playgroud)
这会导致以下错误消息:Uncaught TypeError: undefined is not a function.我删除该app.inject()行时错误消失.
初始化程序在ember-cli中处理方式不同和/或上述代码中的某些内容是否正确?或者,与使用初始化程序相比,它们是实现目标的更好方法吗?
Kin*_*n2k 11
Ember希望您注册一个可以使用该create方法创建实例的工厂.如果您传入一个实例(或只是一个方法),您需要告诉Ember不要尝试实例化它并只使用传入的实例.
export default {
name: 'injectMethod',
initialize: function(container, app) {
var someFunction = function(message) {
};
app.register('function:main', someFunction, {instantiate: false});
Em.A(['route', 'controller', 'view']).forEach(function(place) {
app.inject(place, 'someFunction', 'function:main');
});
}
};
Run Code Online (Sandbox Code Playgroud)
示例:http://emberjs.jsbin.com/xaboliwu/1/edit
| 归档时间: |
|
| 查看次数: |
2574 次 |
| 最近记录: |