Можно ли в пользовательском элементе Polymer отслеживать изменения свойств элементов в коллекции?

У меня есть пользовательский элемент Polymer, который содержит массив элементов, отображающий их в виде таблицы. Я обнаружил, что при изменении свойства элемента в массиве отображение не обновляется.

Демонстрация проблемы представлена ​​во втором из этих примеров таблиц. .

Я подозреваю, что это может быть связано с использованием цикла repeat для рендеринга каждого свойства, а не с указанием фактического имени свойства в шаблоне, поэтому путь к свойству не привязывается к наблюдателю?

Я работаю над этим, составляя строку и повторно анализируя элемент после изменения одного из его атрибутов, а затем объединяя его обратно в массив, но это явно неэффективно.

Есть ли способ убедиться, что Polymer обновляет отображение при изменении свойства элемента в коллекции?


person Alf Eaton    schedule 21.04.2014    source источник
comment
Можете ли вы опубликовать пример того, как выглядит ваш текущий шаблон?   -  person robdodson    schedule 24.04.2014
comment
Вот демонстрация: jsfiddle.net/hubfiddle/evaHv — это демонстрирует, что на свойство должен ссылаться name в шаблоне, иначе представление не будет обновляться при изменении свойства.   -  person Alf Eaton    schedule 24.04.2014


Ответы (1)


Я полагаю, вы правы, что для изменений наблюдаются только идентификаторы верхнего уровня, а не их свойства. Например, если у вас есть выражение:

{{ { article: article, field: field }} 

Обнаруживаются только изменения в article и field — изменения в их свойствах, например article.id, не обнаруживаются.

В этом случае я смог заставить ваш пример работать, заменив выражение и фильтр на:

{{ article[field] }}

Доступ к массиву не задокументирован как поддерживаемый в выражениях, но это, по-видимому, недосмотр. Я открыл тикет, чтобы обновить документы:

https://github.com/Polymer/polymer/issues/486

person DocDude    schedule 28.04.2014
comment
Идеальный! По какой-то причине я не пробовал доступ к массиву; пока вроде работает хорошо. - person Alf Eaton; 29.04.2014
comment
Рад, что это сработало для вас. Однако похоже, что я ошибся насчет свойств, наблюдаемых в других выражениях. Насколько я могу судить, это не так. Я обновлю ответ. - person DocDude; 29.04.2014