2

在淘汰赛中,我们可以创建看起来像这样的自定义元素:

<flight-deals params='from: "lhr", to: "sfo"'></flight-deals>

HTML 中自定义元素的定义仍在进行中,今天使用它的一部分过程是使用document.registerElement.

但是,我在敲除文档中找不到任何关于这些方面的内容,当我调查我的自定义元素是否在调用后通过敲除注册到 DOM 时ko.components.register,结果证明不是。

因此,如果我在淘汰赛中使用自定义元素,我是否还应该确保也使用手动注册这些元素document.registerElement?淘汰赛还没有这样做的事实让我有点困惑。

4

1 回答 1

2

对于现代浏览器和 IE9+,您不需要做任何特别的事情。

对于 IE6 - IE8 支持,您确实需要意识到这一点并使用一点魔法。正如相关文件所述

  • HTML5 时代的浏览器,包括Internet Explorer 9和更高版本,自动允许自定义元素没有任何困难。
  • Internet Explorer 6 到 8也支持自定义元素,但前提是它们在 HTML 解析器遇到任何这些元素之前注册。

IE 6-8 的 HTML 解析器将丢弃任何无法识别的元素。为确保它不会丢弃您的自定义元素,您必须执行以下操作之一:

  • 确保ko.components.register('your-component')在 HTML 解析器看到任何<your-component>元素之前调用
  • 或者,至少document.createElement('your-component')在 HTML 解析器看到任何<your-component>元素之前调用。你可以忽略 createElement 调用的结果——重要的是你调用了它。
于 2016-01-27T12:52:38.570 回答