Javascript I';我明白了。get()在ember中未定义

Javascript I';我明白了。get()在ember中未定义,javascript,events,ember.js,undefined,global,Javascript,Events,Ember.js,Undefined,Global,我正在尝试创建一个事件总线,以便能够在整个应用程序中触发一些ui事件。我遵循了这里的说明: 我将事件总线作为服务加载到名为ui的组件属性中,但由于某种原因,我得到了以下错误:TypeError:this.get(…)未定义,这很奇怪,因为它应该是,对吗?不管我是在init中运行代码,还是在didInsertElement中运行更高版本的代码,都是相同的错误。我能做什么 // services/ui.js import Ember from 'ember'; export default Em

我正在尝试创建一个事件总线,以便能够在整个应用程序中触发一些ui事件。我遵循了这里的说明:

我将事件总线作为服务加载到名为ui的组件属性中,但由于某种原因,我得到了以下错误:
TypeError:this.get(…)未定义,这很奇怪,因为它应该是,对吗?不管我是在init中运行代码,还是在didInsertElement中运行更高版本的代码,都是相同的错误。我能做什么

// services/ui.js

import Ember from 'ember';

export default Ember.Service.extend(Ember.Evented);

//components/side-menu.js

import Ember from 'ember';

export default Ember.Component.extend(Ember.Evented, {
  ui: Ember.inject.service(),
  init() {
    this._super(...arguments);
    this.get('ui').on('side-menu:toggle', this.actions, 'toggle');
  },
  actions: {
    toggle: function() {
      this.$().sidebar('toggle');
    }
  }
});

我想出来了。这是因为我绑定了
this.actions
并且没有在actions属性上定义get。当我创建了一个名为toggle and bound
的方法时,这个
起了作用。谢谢你的帮助

您不需要在组件中混合
Ember.events
。不确定这会导致您看到的错误的原因,但是删除它值得一试。尝试使用
.on('init')
而不是覆盖
init
@rollingBalls,这是非常糟糕的建议,您不应该对生命周期挂钩使用
on
。您应该重写它们并调用super,就像OP那样。通常,这就是为什么我建议始终使用
Ember.get(target,'name')
而不是
target.get('name')
。也许吧