Ember:从导入的 mixin 覆盖 属性?
Ember: overriding property from imported mixin?
我有一个简单的 mixin,它使用 属性 来执行操作。我正在尝试对继承进行建模,以便我可以在使用 mixin 的组件中 覆盖 这个 属性。
为了在任何 OO 语言中重写的相同好处。
我很欣赏使用 extend
可能更适合建模继承,但我想知道是否可以使用 mixin。
我已经尝试使用 this.get('')
从我的组件中检索一个 属性,但该混入中不存在。这个想法是我可以检查程序员是否想要指定要关注的元素。如果没有,请使用默认值。即使在实现组件上定义了 属性,这 returns 也没有。
import $ from 'jquery';
import Mixin from '@ember/object/mixin';
export default Mixin.create({
didRender() {
this._super(...arguments);
$(this.get('elementToFocus') ? this.get('elementToFocus') : 'h1').focus();
}
});
我也试过在 mixin 上使用 属性,然后在组件中复制 属性。这破坏了一切并给我随机错误。
import $ from 'jquery';
import Mixin from '@ember/object/mixin';
export default Mixin.create({
elementToFocus: 'h1',
didRender() {
this._super(...arguments);
$(this.get('elementToFocus')).focus();
});
如果您能看到我正在努力实现的目标,那么最好的方法是什么?
感谢大家的评论。他们似乎证实了我的怀疑,即我正在尝试/已经尝试过的大部分应该奏效。
我的朋友使用 const focusElement = document.querySelector(this.elementToFocus);
让它工作
我不确定我做错了什么。
我有一个简单的 mixin,它使用 属性 来执行操作。我正在尝试对继承进行建模,以便我可以在使用 mixin 的组件中 覆盖 这个 属性。
为了在任何 OO 语言中重写的相同好处。
我很欣赏使用 extend
可能更适合建模继承,但我想知道是否可以使用 mixin。
我已经尝试使用 this.get('')
从我的组件中检索一个 属性,但该混入中不存在。这个想法是我可以检查程序员是否想要指定要关注的元素。如果没有,请使用默认值。即使在实现组件上定义了 属性,这 returns 也没有。
import $ from 'jquery';
import Mixin from '@ember/object/mixin';
export default Mixin.create({
didRender() {
this._super(...arguments);
$(this.get('elementToFocus') ? this.get('elementToFocus') : 'h1').focus();
}
});
我也试过在 mixin 上使用 属性,然后在组件中复制 属性。这破坏了一切并给我随机错误。
import $ from 'jquery';
import Mixin from '@ember/object/mixin';
export default Mixin.create({
elementToFocus: 'h1',
didRender() {
this._super(...arguments);
$(this.get('elementToFocus')).focus();
});
如果您能看到我正在努力实现的目标,那么最好的方法是什么?
感谢大家的评论。他们似乎证实了我的怀疑,即我正在尝试/已经尝试过的大部分应该奏效。
我的朋友使用 const focusElement = document.querySelector(this.elementToFocus);
我不确定我做错了什么。