gpt4 book ai didi

javascript - 使用JSON创建polymer core-menu/core-submenu

转载 作者:行者123 更新时间:2023-11-30 17:18:48 25 4
gpt4 key购买 nike

我在使用 JSON 创建 polymer 菜单时遇到了一些问题。

我有一个 JSON 结构,有点像 [{"name":foo, "children": [{"name":"bar"}]}, {"name": "arr", "children": []]

我想将其呈现为:<core-menu><core-submenu label="foo"><core-item label="bar"></core-submenu><core-item label="arr"></core-menu>

我试图用看起来有点像的代码来做到这一点:

<polymer-element name="x-menu-item" attributes="node">
<template>
<template if="{{ node.children.length == 0 }}">
<core-item label="{{ node.name }}" link_path="{{ node.link_path }}">
<a href="{{ node.link_path }}" target="_self"></a>
</core-item>
</template>
<template if="{{ node.children.length > 0 }}">
<core-submenu icon="expand-more" label="{{ node.name }}" valueattr="link_path">
<template repeat="{{ child_node in node.children }}">
<x-menu-item node="{{ child_node }}"></x-menu-item>
</template>
</core-submenu>
</template>
</template>
<script>
Polymer('x-menu-item', {
});
</script>
</polymer-element>

<polymer-element name="x-menu" attributes="nodes">
<template>
<core-menu>
<template repeat="{{child_node in nodes}}">
<x-menu-item node="{{child_node}}"></x-menu-item>
</template>
</core-menu>
</template>
<script>
Polymer('x-menu', {});
</script>
</polymer-element>

但这对我根本不起作用:问题似乎是它在 x-submenu 上设置了“核心选择”类而不是在 core-item 上或 core-submenu它包含的标签。

我该怎么做:仅使用原始核心菜单/核心子菜单/核心项目标签(变异 innerHTML?appendChild?)定义它,或者正确传播类和点击以便展开我的菜单?

最佳答案

答案原来是使用<template id/ref>在内部递归 <x-menu>不使用<x-menu-item> .

完整示例:

<polymer-element name="x-menu" attributes="nodes">
<template>
<core-menu>
<template id="submenu" repeat="{{node in nodes}}">
<template if="{{ node.children.length == 0 }}">
<core-item label="{{ node.name }}" link_path="{{ node.link_path }}">
<a href="{{ node.link_path }}" target="_self"></a>
</core-item>
</template>
<template if="{{ node.children.length > 0 }}">
<core-submenu icon="expand-more" label="{{ node.name }}" valueattr="link_path">
<template ref="submenu" repeat="{{node in nodes}}></template>
</core-submenu>
</template>
</template>
</core-menu>
</template>
<script>
Polymer('x-menu', {
created: function() {
this.nodes = [];
}
});
</script>
</polymer-element>

这巧妙地回避了我在原版中遇到的所有问题,如 <core-submenu><core-item><core-menu> 的直系子代在这里。

关于javascript - 使用JSON创建polymer core-menu/core-submenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25574596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com