Ember无标记组件innerhtml

Mar*_*rio 3 javascript components ember.js

我在Ember中有一个无标签组件,并希望this.element在生命周期钩子上使用innerHtml()(例如didRender).当我this.element总是使用值时null.当我向组件添加一个标记名(tagName: 'div')时,我有组件的innerHtml this.element,但我可以在不设置tagName的情况下获取innerHtml吗?

Ed4*_*Ed4 7

this.element没有给你innerHTML,它给你一个真正的HTML Element.根据定义,无标记组件没有任何Element自己的组件.所以this.element必然是空的.

我们没有添加用于检索a的等效属性Range(这是您需要表示DOM的无标记组件的区域)的最大原因是,不同的是this.element,Range可能会在组件的生命周期中发生变化.使其完全可观察将是昂贵的,并且让它不可观察将使得创建错误变得非常容易.

大多数常见用例都包含在Gaurav建议的内容中:明确标记您真正想要查找的元素并通过querySelector或访问它们querySelectorAll.

如果你正在做一些非常喜欢的事情,并且你明白它只是一个可以过时的快照,那么逃生舱就是Ember.ViewUtils.getViewBounds.它没有被标记为公开,但它依赖于像Ember Inspector这样的官方项目,所以我们绝对不会在没有警告的情况下打破它.与任何使用频繁的非公共API一样,我们会发出弃用警告并等待完整的LTS循环.

在这种情况下Ember.ViewUtils.getViewBounds,可以强有力地将其标记为公开,如果有人为此编写RFC,我认为我们可以就此达成共识.