首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ember Octane中添加DOM元素

在Ember Octane中添加DOM元素
EN

Stack Overflow用户
提问于 2020-10-27 08:26:20
回答 2查看 168关注 0票数 2

我目前正在将一些代码从旧的Ember样式转换到Ember Octane,所以我对Octane有点新手。在问题的核心,我想在插入元素时使用this.element.appendChild附加一个div,然后选择并附加一个SVG到div并从那里修改它。然而,Ember Octane不允许生命周期挂钩。做这件事最好的方法是什么?

更详细地说,该组件利用D3来呈现图形,因此它通过创建一个id为svgdiv来初始化图的设置,然后选择它并向其附加一个svg,并继续对其执行D3操作以呈现图形。

我已经研究了ember-render-modifiers,但这似乎是一种变通方法,是重构代码的一种方法,所以我想知道是否有比这更好的方法。

EN

回答 2

Stack Overflow用户

发布于 2020-10-27 18:32:33

尽管如此,在Octane中使用ember-render-modifiers是可行的,因为它将提供对元素的访问,并且它将在插入时起作用。

看看他们的例子。

代码语言:javascript
复制
{{#if this.shouldShow}}
  <div {{did-insert this.fadeIn}} class="alert">
    {{yield}}
  </div>
{{/if}}
代码语言:javascript
复制
export default Component.extend({
  fadeIn(element) {
    element.classList.add('fade-in');
  }
});
票数 2
EN

Stack Overflow用户

发布于 2020-11-10 02:16:53

ember-render-modifiers旨在简化向辛烷值的过渡。

您希望使用ember-modifier创建自己的修饰符

代码语言:javascript
复制
/* component.hbs */
<div {{d3-chart this.data this.options}}></div> 
代码语言:javascript
复制
/* app/modifiers/d3-chart.js */
import { modifier } from 'ember-modifier';

export default modifier(element, [data, options] => {
  /*
    The `element` argument is the element the modifier was invoked on
    The second argument is an array of positional params 

    I'm guessing at the params you'd need; not sure what would be an optimal design since that would depend on what you are doing with d3.

    Append the svg, setup d3, etc in here.
  */

  return () =>  {
    /* Cleanup d3 stuff here for when the element with the modifier is torn down */
  };
});

修饰符也有面向对象的样式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64546758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档