私はアプリケーション全体でいくつかのUIイベントをトリガーできるようにイベントバスを作成しようとしています。 http://emberigniter.com/communication-between-distant-components/私はthis.get()がemberで定義されていません
イベントバスをサービスとしてuiというコンポーネントプロパティにロードしますが、何らかの理由でこのエラーが発生します:TypeError: this.get(...) is undefined
これは正しくなければならないので、それは間違いです。 didInsertElementのinitまたはそれ以降のコードで同じエラーを実行するかどうかは関係ありません。私に何ができる?
// 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');
}
}
});
あなたのコンポーネントに 'Ember.Evented'を混ぜる必要はありません。それがなぜあなたが見ているエラーの原因になるのか分かりませんが、それを削除することは試してみる価値があります。 –
'init'を無効にする代わりに' .on( 'init') 'を使ってみてください。 – rollingBalls
@rollingBallsは非常に貧弱ですが、lifecycleフックには 'on'を使用しないでください。 OPのように、それらをオーバーライドしてsuperを呼び出す必要があります。 – locks