我刚刚升级到最新的canrer版本的ember,并注意到我的初始化程序将currentUser控制器注入所有控制器不再有效。
这是代码。
Ember.Application.initializer({
name: "fetchUsers",
after: "store",
initialize: function(container, application) {
var store, controller;
application.deferReadiness();
store = container.lookup('store:main');
controller = container.lookup('controller:currentUser');
return store.find('user').then( function(users) {
var currentUser;
currentUser = users.findBy('isCurrent', true);
controller.set('content', currentUser);
application.inject('controller', 'currentUser', 'controller:currentUser');
application.advanceReadiness();
});
}
});
这在发行版和测试版分支中运行良好但在金丝雀中我得到以下错误。
Error: Cannot inject a `controller:current-user` on other controller(s). Register the `controller:current-user` as a different type and perform the typeInjection.
我该如何解决这个问题?我想currentUser是一个ObjectController,这可能吗?
答案 0 :(得分:6)
好的,这是我目前的初始化程序。我真的只是将currentUser ObjectController更改为ObjectProxy。我现在唯一挂断的是存储CurrentUserObjectProxy文件的位置。我倾向于模特dir。
Ember.Application.initializer({
name: "fetchUsers",
after: "store",
initialize: function(container, application) {
var store, user, proxy;
application.deferReadiness();
store = container.lookup('store:main');
proxy = App.CurrentUserObjectProxy.extend();
container.register('user:current', proxy, {singleton: true});
proxy = container.lookup('user:current');
store.find('user').then( function(users) {
user = users.findBy('isCurrent', true);
proxy.set('content', user);
application.inject('controller', 'currentUser', 'user:current');
application.advanceReadiness();
});
}
});
我希望这有助于某人。