在初始化时将控制器注入控制器不再工作(金丝雀)

Aar*_*oir 4 ember.js

我刚刚升级到最新的canary版本的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();
   });
  }
});
Run Code Online (Sandbox Code Playgroud)

这在发布和beta分支中运行良好但在金丝雀中我得到以下错误.

Error: Cannot inject a `controller:current-user` on other controller(s). Register the `controller:current-user` as a different type and perform the typeInjection.
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?我想currentUser是一个ObjectController,这可能吗?

Aar*_*oir 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();
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助别人.