gpt4 book ai didi

javascript - Polymer - 遍历模板中的对象

转载 作者:太空狗 更新时间:2023-10-29 15:35:26 26 4
gpt4 key购买 nike

根据polymer docs ,可以使用 repeat 迭代对象或数组<template> 中的声明:

"expression" can be a simple identifier, a path or a full expression (including Object and Array literals).

然而,经过测试,repeat 语句似乎只适用于数组,而不适用于对象:

http://jsbin.com/oqotUdE/4/edit

我做错了什么吗?

最佳答案

我最近遇到了这个问题,并通过使用返回 Object.keys(obj) 的过滤器解决了这个问题。下面是一个如何这样做的简单示例(也许有更好的方法,如果有,请赐教)...

<template repeat="{{item in obj | getKeys}}">
<span>Key: {{item}}</span>
<span>Value: {{obj[item]}}</span>
</template>

...etc...

<script>
Polymer('my-element', {
// yes i know, instantiate arrays/objects in the created method,
// but this is just an example
obj : {},

// my custom filter function to use in looping objects
getKeys : function(o){
return Object.keys(o);
}

});
</script>

当然你可以变得更复杂,检查数据类型并确保它是一个对象。下面是循环遍历无限嵌套对象的递归版本(同样,如果有更简单的方法,请告诉我)

<template if="{{obj}}" id="root" bind="{{obj as o}}">

<ul>

<template repeat="{{item in o | getKeys}}">
<li>

<span class="key">{{item}}</span>

<template if="{{o[item] | isNotObject}}">
<span class="value">{{o[item]}}</span>
</template>

<template if="{{o[item] | isObject}}">
<template ref="root" bind="{{o[item] as o}}"></template>
</template>

</li>
</template>

</ul>

</template>

...etc...

<script>
Polymer('object-view', {

obj : {},

getKeys : function(o){
return Object.keys(o);
},

isObject : function(v){
return typeof(v) === "object";
},

isNotObject : function(v){
return typeof(v) !== "object";
}

});
</script>

这当然有效(对我来说),循环遍历对象(实际上是和数组)。虽然,我对 Object.keys 的使用不是很满意。很快就会看到 polymer 对对象迭代的支持,这让我感到非常鼓舞。

关于javascript - Polymer - 遍历模板中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22211597/

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