你可以这样使用它:
import { on } from '@ember/object/evented';
export default Controller.extend(Evented, {
init() {
this._super(...arguments);
this.trigger('greet');
},
myGreetImplementation: on('greet', function() {
console.log('hello');
})
});
另一个示例:使用服务管理用户设置并订阅更改:
export default Service.extend(Evented, {
...
changeProfilePicture() {
...
this.trigger('profilePictureChanged', ... event parameters ...);
}
});
on
方法:
export default Controller.extend({
userSettings: service(),
init() {
this._super(...arguments);
this.get('userSettings').on('profilePictureChanged', this, this.profilePictureChanged);
},
profilePictureChanged(... event parameters ...) {
...
}
});
https://github.com/emberjs/ember.js/blob/6fc89cdf13124d88b8ae6adf99bb02a8c0cdf508/packages/ember-metal/lib/events.ts#L211
(您可以只在github搜索中粘贴错误消息,或者使用调试器了解有关失败原因的更多信息)
import Ember from 'ember';
import { inject as service } from '@ember/service';
import { on } from '@ember/object/evented';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
myService: service(),
init() {
this._super(...arguments);
this.get('myService').on('mycall', this, this.mycallHandler);
},
mycallHandler: on('mycall', function() {
console.log('here we are');
})
});