【发布时间】:2014-07-04 04:46:38
【问题描述】:
使用像这样使用Ember.Evented mixin 的控制器:
var FoosController = Ember.ArrayContoller.extend(Ember.Evented, {
/* ... */
actions: {
someAction: function() {
this.trigger('someActionMessage', 'bla bla');
},
},
});
export default FoosController;
我定义了这个控制器的活动视图,以便它监听
对于someActionMessage,像这样:
var FoosView = Ember.View.extend({
onSomeActionMessage: function() {
console.log('FoosView onSomeActionMessage', arguments);
}.on('controller.someActionMessage'),
});
export default FoosView;
... 但是,onSomeActionMessage 方法永远不会被调用。
所以我尝试了一些其他的东西,这似乎是等价的,除了更冗长(和更混乱)。
var FoosView = Ember.View.extend({
onDidInsertElement: function() {
var ctrl = this.get('controller');
ctrl.on('someActionMessage', this, this.onSomeActionMessage);
}.on('didInsertElement'),
onSomeActionMessage: function() {
console.log('FoosView onSomeActionMessage', arguments);
},
});
export default FoosView;
另一方面,这按预期工作。
为什么后者有效,而前者无效;
为什么 .on() 不像 didInsertElement 那样对我的自定义事件起作用?
【问题讨论】:
标签: javascript ember.js publish-subscribe