Ember:从导入的mixin覆盖属性?

时间:2019-02-21 15:25:35

标签: ember.js mixins

我有一个简单的mixin,它使用属性执行操作。我正在尝试对继承建模,以便可以在使用mixin的组件中覆盖此属性。

出于与覆盖任何OO语言相同的好处。

我很欣赏使用extend来建模继承,但我不知道使用mixin是否可以实现。


我尝试使用this.get('')从我的组件中检索mixin中不存在的属性。我可以检查程序员是否要指定要关注的元素。如果不是,请使用默认值。即使在实现组件上定义了属性,也不会返回任何内容。

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();
});

如果您能看到我正在努力实现的目标,什么是最好的方法?

1 个答案:

答案 0 :(得分:0)

感谢您的评论。他们似乎证实了我的怀疑,即我正在尝试/已经尝试的大部分工作都已经奏效。

我的朋友使用const focusElement = document.querySelector(this.elementToFocus);

我不确定自己在做什么错。