Выборочно изменяется свойство публикации из элемента polymer

#javascript #events #polymer

#javascript #Мероприятия #полимер

Вопрос:

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

Например, у меня есть пользовательский элемент ввода с атрибутом «заголовок». Если привязка данных внутри моих элементов или какого-либо источника, отличного от моей платформы, устанавливает свойство caption для моего элемента управления, я хочу, чтобы в моей платформе было опубликовано событие, информирующее его об изменении свойства caption, но если моя платформа устанавливает свойство caption, я не хочу публиковать событие.

В настоящее время я публикую эти события в блоке наблюдения. У меня есть функция для моих элементов, называемая setFromExternalModel(prop, value), которую я использую для установки значения свойства из моего фреймворка. Если бы у меня был какой-то способ передать данные из этой функции в блок наблюдения, я мог бы предотвратить публикацию события, но я не смог придумать элегантный способ сделать это.

Мысли?

Ответ №1:

Почему важно не запускать события, если ваша платформа изменяет свойство? Гораздо проще обрабатывать все изменения свойств одинаково.

Основные элементы Polymer и paper не имеют понятия об изменениях фреймворка / пользовательских данных, и мы не думали о каких-либо вариантах использования, где это было бы важно.

Комментарии:

1. Причина, по которой я хочу подавить событие, заключается в том, что мне не нужно запускать его обратно на сервер, если оно пришло с сервера, тем более, что оно может перезаписать изменение другого пользователя, которое могло быть зафиксировано между исходным набором свойств. Я достиг своей цели, используя журнал изменений, но мне бы хотелось иметь функциональный API для настройки свойств, чтобы я мог включать метаданные, которые будут перенаправлены на событие. Это упростило бы мой код.