gpt4 book ai didi

javascript - Ember : How do I inject into a view?

转载 作者:行者123 更新时间:2023-11-30 17:36:42 25 4
gpt4 key购买 nike

假设我有一些可重复使用的东西:

App.FooUtil = Ember.Object.extend({
foo: function () {
return "bar";
}
});

然后我像这样注册它:

App.register('util:fooUtil', App.FooUtil);

然后我尝试将它“注入(inject)”到我的 View 中:

App.inject('view', 'fooUtil', 'util:fooUtil');

现在假设我有这个 View :

App.SuperView = Ember.View.extend({
contextMenu: function(evt) {
//This is ALWAYS undefined!
var fooUtil = this.get('fooUtil');
window.alert(fooUtil.foo());
event.preventDefault();
}
});
{{#view App.SuperView}}Right Click Me!{{/view}}

我根本无法将实用程序类注入(inject)到我的 View 中。什么给了?

用头撞墙,我也试过:

App.inject('views', 'fooUtil', 'util:fooUtil');
App.inject('view:index', 'fooUtil', 'util:fooUtil');
App.inject('view:topLevel', 'fooUtil', 'util:fooUtil');
App.inject('view:super', 'fooUtil', 'util:fooUtil');

最佳答案

fooUtil 注入(inject)所有 Controller 是否有缺点?那么您的代码将如下所示:

App.SuperView = Ember.View.extend({
contextMenu: function(evt) {
var fooUtil = this.get('controller.fooUtil');
window.alert(fooUtil.foo());
event.preventDefault();
}
});

还有你在哪里做注入(inject)?我通常在初始化程序中执行此操作。

Ember.Application.initializer({

name: 'fooUtil',
after: 'store',

initialize: function(container) {
container.injection('controller', 'fooUtil', 'util:fooUtil');
}
});

关于javascript - Ember : How do I inject into a view?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21898279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com