2014-12-31 6 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. Как наблюдать объект в массиве (на основе данного вопроса комментария Polymer/полимер-выражение # 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

ok спасибо Я попросил новую функцию клавиш, чтобы сделать ее более легкой :) https://github.com/Polymer/polymer/issues/1062 –

+1

Альтернативно, создайте локальную ссылку на метод 'keys':' keys: Object. keys' и использовать метод в привязке: '{{поле в ключах (obj)}}'. Более динамичный. – DocDude

Смежные вопросы