2014-12-31 67 views
1

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

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

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

请参阅此相关的问题:http://stackoverflow.com/questions/22211597/polymer-iterating-over-object-in-template – Cristian

回答

1

plunker显示了两个例子:

  1. 如何刷新使用滤波器参数重复。较少的开销和 易于实现。我们建议在 观察员尽可能使用事件动作,

  2. 如何观察对象为Array(从本期评论基于 高分子/聚合物表达式#11(评论))

<!-- 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); 
    } 
}); 

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。聚合物限制了这样的事情,因为我明白

+0

真要编辑。 –

+0

好的,谢谢我要求一个新的密钥功能,使它更容易:) https://github.com/Polymer/polymer/issues/1062 –

+1

或者,创建'keys'方法的本地引用:'keys:Object。 keys'并在绑定中使用该方法:'{{key in(obj)}}'中的字段。更具活力。 – DocDude