В потребителски елемент Polymer могат ли свойствата на елементите в колекция да бъдат наблюдавани за промени?

Имам персонализиран елемент Polymer, който съдържа масив от елементи, изобразявайки ги като таблица. Откривам, че когато свойство на елемент в масива се промени, дисплеят не се актуализира.

Има демонстрация на проблема във втората от тези примерни таблици .

Подозирам, че може да е свързано с използването на repeat цикъл за изобразяване на всяко свойство, вместо да се посочи действителното име на свойство в шаблона, така че пътят до свойството не получава прикачен наблюдател?

Заобикалям това, като стрингифицирам и повторно анализирам елемента след промяна на един от неговите атрибути, след което го сплайсинг обратно в масива, но това очевидно е неефективно.

Има ли начин да се гарантира, че Polymer актуализира дисплея, когато свойство на елемент в колекция се промени?


person Alf Eaton    schedule 21.04.2014    source източник
comment
Можете ли да публикувате пример за това как изглежда текущият ви шаблон   -  person robdodson    schedule 24.04.2014
comment
Ето демонстрация: jsfiddle.net/hubfiddle/evaHv - това демонстрира, че свойството трябва да бъде посочено от име в шаблона, в противен случай изгледът не се актуализира, когато свойството се промени.   -  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