Javascript I';我明白了。get()在ember中未定义
我正在尝试创建一个事件总线,以便能够在整个应用程序中触发一些ui事件。我遵循了这里的说明: 我将事件总线作为服务加载到名为ui的组件属性中,但由于某种原因,我得到了以下错误: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
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')
。也许吧