是否可以在条件下延长Ember课程?像这样:
A.reopen({
if (condition) {
init: function() {
this.super();
// some functionality
}.on('didInsertElement');
}
})
目前我有这样的模式:
A.reopen({
init: function() {
this.super();
if (condition) {
// some stuff
}
}.on('didInsertElement'),
cleanup: function() {
if (condition) {
// some stuff
}
}.on('willDestroyElement')
})
我猜想是否可以扩展A类,条件是我可以像这样简化我的模式:
A.reopen({
if (condition) {
init: function() {
this.super();
// some functionality
}.on('didInsertElement'),
clear_up: function() {
// some stuff
}.on('willDestroyElement')
}
})
插件中的所有类扩展
答案 0 :(得分:0)
看起来你想要将Java中的内容称为抽象类。
Ember.Component.extend({ // abstract class
doSomeInit: Ember.K,
doSomeCleaning: Ember.K,
didInsertElement: function() {
this.super(..arguments);
this.doSomeInit();
},
willDestroyElement: function() {
this.doSomeCleaning();
}
})
// class A
Ember.Component.extend(MyIncompleteClass, {
doSomeInit: function() { /* etc */ },
doSomeCleaning: function() { /* etc */ }
});
// class B
Ember.Component.extend(MyIncompleteClass, {
doSomeInit: function() { /* etc */ },
doSomeCleaning: function() { /* etc */ }
});
旁注:最好覆盖生命周期钩子而不是使用Ember.on,以保证执行顺序;对于同一事件,就多个Ember.on而言。