2014-12-31 89 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