聚合物模板重复字段名称

时间:2014-12-31 18:14:46

标签: polymer

如何使用聚合物重复模板动态获取此行数组对象的所有字段?

rows = [{
  "field1":"test1",
  "field2":"test2",
  "field3":"test3",
  "field4":"test4"
}]

<template repeat="{{data in rows}}">
   {{data.field1}}
   {{data.field2}}
   {{data.field3}}
   {{data...}}
</template>

2 个答案:

答案 0 :(得分:1)

狡猾的请求......

我试过,我最好的运气是这样的:

<polymer-element name="x-for-in">
    <template>
        <template repeat="{{field in keys}}">
            {{obj[field]}}
        </template>
    </template>
    <script>
        Polymer({
            obj : null,
            keys : [],
            created : function () {
                this.obj = {
                    field1 : 1,
                    field2 : 2,
                    field3 : 3
                };
                this.keys = Object.keys(this.obj);
            }
        })
    </script>
</polymer-element>

OUTPUT : 1,2,3

BTW:我不是100%肯定你在描述中的意思,因为你的代码说的是行 - 是对象数组,而你说的是行是一个对象....

无论如何,到目前为止这么好,上面的例子应该给出一个想法。

BTW2:{{data is rows}}其中行是一个对象 - 不起作用,因为它本质上是一个javascript for in。聚合物限制了我理解的东西

答案 1 :(得分:1)

这个plunker显示了两个例子:

  1. 如何使用filter参数刷新重复。减少开销和 易于实施。建议使用事件操作 尽可能观察,

  2. 如何将对象视为数组(基于此问题的注释 聚合物/聚合物 - 表达#11(评论))

  3. <!-- parameters passed to filters are observed, so changing refresh updates the repeat -->
    <template repeat="{{key in objectData | toKeys(refresh)}}">
      {{ objectData[key] }}
    </template>
    

    Polymer({
      refresh: 0, // update this value to refresh the repeat
      toKeys: function(input) {
        if (!input) return;
        return Object.keys(input);
      }
    });