javascript - Ember 无标签组件 innerhtml
问题描述
我在 Ember 中有一个无标记组件,并希望this.element
在生命周期挂钩(例如 didRender)上有 innerHtml ( )。当我使用this.element
该值时,总是null
. 当我向组件 ( tagName: 'div'
) 添加标记名时,我有组件的 innerHtml this.element
,但是我可以在不设置标记名的情况下获得 innerHtml 吗?
解决方案
this.element
不给你innerHTML
,它给你一个真正的HTML Element
。根据定义,无标签组件没有任何Element
自己的组件。所以this.element
必然为空。
我们没有添加用于检索 a 的等效属性Range
(这是您表示 DOM 的无标记组件区域所需的)的最大原因是,与 不同的是this.element
,Range
在组件的整个生命周期中可能会发生变化。让它完全可观察会很昂贵,而让它不可观察会很容易产生错误。
Gaurav 建议的内容涵盖了大多数常见用例:明确标记您真正想要查找的元素并通过querySelector
or访问它们querySelectorAll
。
如果您正在做一些非常奇特的事情,并且您知道它只是一个可能会过时的快照,那么逃生舱口就是Ember.ViewUtils.getViewBounds
. 它没有标记为 public,但它依赖于像 Ember Inspector 这样的官方项目,所以我们绝对不会在没有警告的情况下破坏它。像任何大量使用的非公共 API 一样,我们会发出弃用警告并等待一个完整的 LTS 周期。
在 的情况下Ember.ViewUtils.getViewBounds
,可以将其标记为公开的一个强有力的案例,如果有人为此编写 RFC,我认为我们可以就此达成共识。
推荐阅读
- phpstorm - PhpStorm HTML 快捷方式
- firebase - 如何在之前创建的文档中添加字段?
- android - 企业内部的管理 API 和应用程序分发
- javascript - Javascript curl 等价物
- c# - 如何加密和解密多个文件到一个文件?
- google-api - 从另一个 Google Doc 更新 Google Doc 的内容而不创建新文件
- python - AttributeError:Django、Python 中的模块
- java - onCreate() 方法被跳过
- javascript - 从 Hypercube Qlik Sense 混搭中选择尺寸
- traefik - 如果后端服务器在 VPN 后面,则网关错误