首页 > 解决方案 > Ember 无标签组件 innerhtml

问题描述

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

标签: javascriptember.jscomponents

解决方案


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

我们没有添加用于检索 a 的等效属性Range(这是您表示 DOM 的无标记组件区域所需的)的最大原因是,与 不同的是this.elementRange在组件的整个生命周期中可能会发生变化。让它完全可观察会很昂贵,而让它不可观察会很容易产生错误。

Gaurav 建议的内容涵盖了大多数常见用例:明确标记您真正想要查找的元素并通过querySelectoror访问它们querySelectorAll

如果您正在做一些非常奇特的事情,并且您知道它只是一个可能会过时的快照,那么逃生舱口就是Ember.ViewUtils.getViewBounds. 它没有标记为 public,但它依赖于像 Ember Inspector 这样的官方项目,所以我们绝对不会在没有警告的情况下破坏它。像任何大量使用的非公共 API 一样,我们会发出弃用警告并等待一个完整的 LTS 周期。

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


推荐阅读