gpt4 book ai didi

javascript - 根据条件延长 Ember 等级

转载 作者:行者123 更新时间:2023-11-28 05:25:34 26 4
gpt4 key购买 nike

是否可以根据条件扩展 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')
}
})

插件中为 discourse 所做的所有类扩展

最佳答案

看起来您想要的是 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 */ }

});

旁注:最好重写生命周期钩子(Hook)而不是使用 Ember.on,以保证执行顺序;这是同一事件有多个 Ember.on 的情况。

关于javascript - 根据条件延长 Ember 等级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40205209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com