1

我想定义一个<my-table>可以包含多个列<mytable-col> 的新元素用法应该如下所示:

<my-table id="mt1">
 <mytable-col id="c1" title ="name" type="string"width="150"></mytable-col>
 <mytable-col id="c2" title ="age" type="number" width="60"></mytable-col>
</my-table>

是否可以用另一个(必需的)新“内部”元素定义一个元素?如何从外部的 dart 代码访问内部元素实例的标记。

如果模板的模板<my-table><mytable-col>标记都包含,那么内部的标记<mytable-col>插入到哪里?

4

2 回答 2

1

您编写标记的方式是<mytable-col>元素的子元素<my-table>被添加到元素<content>内的节点<my-table>

您可以从您<mytable-col>喜欢的代码中访问这些子元素

var listContent = ($['content'] as ContentElement).getDistributedNodes();

我不确定你的意思

是否可以用另一个(必需的)新“内部”元素定义一个元素?

您可以在您的enteredView()方法中添加代码(在super.enteredView();验证节点中正确的子节点是否可用的调用之后,<content>如果没有则抛出异常。

内部的标记在哪里插入?

标记被插入到它的元素shadowDOM中。
标记会更改元素的外观,但通常不可见,
例如当您view source从浏览器打开时(除非您启用shadowDOM在 Chromium/Dartium 中显示的选项或您的浏览器不支持shadowDOM,然后您会看到 polyfills 如何尝试模拟shadowDOM)。

您可以将其与标签进行比较,例如<video>添加此标签会创建许多元素(如播放、停止、继续、快进按钮以及在幕后添加的负责布局的布局的<span>s 和s<div>和标签的行为,<video>但在标记中不可见。

于 2014-01-09T09:05:05.063 回答
0

在@Günter Zöchbauer 的帮助下,我找到了解决方案:

正如他所写,您可以通过以下方式获取内部 HTML:

var listContent = ($['content'] as ContentElement).getDistributedNodes();

因为这只会找到带有 id 的节点,所以您必须在组件的 HTML 中定义带有 id 的元素。

<content id = content><span>inner HTML</span></content>
于 2014-01-17T22:23:12.063 回答