Я хочу построить DOM-дерево пользовательских элементов Polymer 2.0, но я хочу просто заполнить дочерние элементы (слоты) на основе типа тега каждого дочернего элемента, поэтому, когда я пишу HTML для использования своих пользовательских элементов don не хочу написать:
<group>
<title slot="title">admins</title>
<description slot="description">some description</description>
<users slot="users">
<user slot="user">
<name slot="name">Amy</name>
<dept slot="dept">Widgets</dept>
<phone slot="phone">1234</phone>
</user>
<user slot="user">
<name slot="name">Bill</name>
<dept slot="dept">Sprockets</dept>
<phone slot="phone">5678</phone>
</user>
<user slot="user">
<name slot="name">Chris</name>
<dept slot="dept">Rachets</dept>
<phone slot="phone">1357</phone>
</user>
</users>
</group>
Это должно работать с использованием именованных слотов в Polymer 2.0, но вы можете видеть, что это очень громоздко и избыточно, если у вас есть глубокое дерево, где каждый уровень имеет несколько свойств.
Вместо этого я действительно хочу просто написать:
<group>
<title>admins</title>
<description>some description</description>
<users>
<user>
<name>Amy</name>
<dept>Widgets</dept>
<phone>1234</phone>
</user>
<user>
<name>Bill</name>
<dept>Sprockets</dept>
<phone>5678</phone>
</user>
<user>
<name>Chris</name>
<dept>Rachets</dept>
<phone>1357</phone>
</user>
</users>
</group>
который по сути является просто XML. Мне кажется, что с этим намного проще работать, чем с первым примером. Как вы можете видеть из именованных слотов, по мере того, как дерево становится глубже, оно становится очень тесным и грязным.
Итак, мой вопрос: как я могу сделать последний пример в Polymer 2.0? Это вообще возможно? Мне кажется, что это был бы основной вариант использования Polymer, поэтому действительно должен быть способ добиться этого. Ближе всего я нашел эту веб-страницу, но на самом деле она не делает то, что я хочу, потому что вы ограничены одним слотом «по умолчанию» для каждого пользовательского шаблона элемента:
https://developers.google.com/web/fundamentals/getting-started/primers/shadowdom#slots