【问题标题】:emberjs (unknown mixin) error when working with Ember.Object.Extend使用 Ember.Object.Extend 时出现 emberjs (unknown mixin) 错误
【发布时间】:2015-03-18 13:57:25
【问题描述】:

我正在我的 ember 应用程序中创建一个初始化程序(使用 ember-cli 0.2.0 beta)。在其中,我定义了一个用户对象(我使用 Ember.Object.extend 定义),我想注册并注入到应用程序的控制器中。

当我将用户对象(在定义之后)打印到控制台时,我得到“(未知的 mixin)”。我环顾四周,但似乎找不到解决方案或说明为什么会这样。这是我的初始化程序文件的样子:

// app/initializers/application.js

var currentUser = Ember.Object.extend({
  authToken: localStorage['authToken'],
  isAuthenticated: function () {
    return !!this.get('authToken');
  }.property('authToken')
});

console.log(currentUser); // logs (unknown mixin)

export function initialize(container, application) {
  // register current user factory
  application.register('user:current', currentUser, {singleton: true});

  // inject factory
  application.inject('controllers', 'currentUser', 'user:current');
}

export default {
  name: 'application',
  initialize: initialize
};

【问题讨论】:

  • 您是否尝试过将您的 currentUser 定义/控制台登录移动到您的初始化函数中?
  • @KoriJohnRoys 我试过了,但得到了相同的反馈。但是我发现这个issue 似乎是相关的。无论如何,我能够在我的控制器中访问当前用户,所以看来注入工作毕竟是有效的。

标签: ember.js


【解决方案1】:

我建议使用Ember.Object.create()。扩展对象但从不创建它的实例有什么意义?

【讨论】:

  • 我试过了,但得到了Ember.Object.create no longer supports defining computed properties. Define computed properties using extend() or reopen() before calling create(). 与用户的isAuthenticated 属性有关。
  • 那就试试createWithMixins()
  • 或者在.extend({...之后使用.create()
  • 因为 Ember 容器处理注册对象的生命周期。它会根据需要为您调用.create。此处的.register 调用看起来正确。
猜你喜欢
  • 1970-01-01
  • 2021-07-21
  • 2015-07-14
  • 1970-01-01
  • 2015-09-25
  • 2020-10-21
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
相关资源
最近更新 更多