Javascript 从Ember控制器上的事件处理程序调用“super”
最近,在管线/控制器/视图上。因此,事件处理程序不再是原型上的常规方法 如果您使用Javascript 从Ember控制器上的事件处理程序调用“super”,javascript,ember.js,Javascript,Ember.js,最近,在管线/控制器/视图上。因此,事件处理程序不再是原型上的常规方法 如果您使用extend对一个(例如)控制器进行子类化,是否仍然可以覆盖并调用该超类的处理程序 仅调用\u super不起作用: FormController = Em.ObjectController.extend({ actions: { submit: function() { this.get('model').save(); } } }); SpecialFormController
extend
对一个(例如)控制器进行子类化,是否仍然可以覆盖并调用该超类的处理程序
仅调用\u super
不起作用:
FormController = Em.ObjectController.extend({
actions: {
submit: function() { this.get('model').save(); }
}
});
SpecialFormController = FormController.extend({
actions: {
submit: function() {
this.set('special', true);
this._super(); // doesn't work
}
}
});
余烬使你可以做你想做的事。下面是一个JSFIDLE,演示了它是如何工作的: 当余烬创建一个对象时,它会专门包装这些函数,这样它们就可以使用超级 如果您想分享更多的实现,我可以尝试帮助您找出代码的行为方式与JSFIDLE演示不同的原因
App.BaseController = Em.ArrayController.extend({
actions: {
nameAlert: function(person){
window.alert('alert from BaseController: ' + person.lastName + ', ' + person.firstName);
}
}
});
App.IndexController = App.BaseController.extend({
actions: {
nameAlert: function(person){
this._super(person);
window.alert('alert from IndexController: ' + person.lastName + ', ' + person.firstName);
}
}
});