Простой способ узнать, не загрязнены ли данные

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

Было бы неплохо, если бы искровые элементы "Форма" вызывали событие изменения, которое всплыло и было поймано искрой "Форма". Тогда я мог бы просто добавить слушатель события в форму. Но я не вижу ничего подобного.

Итак, помимо сравнения копии исходного класса данных с связанным классом данных ИЛИ добавления события изменения к каждому элементу формы и захвата этого события, каков простой способ узнать, что объект класса изменился?

1 ответ

Решение

Создайте расширение TextInput или любых других элементов ввода, которые будут у вас в форме, затем при завершении создания компонентов зарегистрируйте прослушиватель для события change, в обработчике отправьте событие пузыря, а затем в документе, который содержит форму, используйте свой пользовательский элементы и добавить слушателя через AS3 в форму для события, которое вы отправили, и остановить его распространение в этой точке.

В противном случае я думаю, что ваше второе решение для каждого из них не будет слишком плохим. Если у вас много элементов в форме или они динамические, вы можете написать функцию, которая просматривает элементы формы и проверяет их потомков, тогда вам просто нужно написать переключатель, который работает с каждым типом класса (вы можете использовать http://www.actionscriptdeveloper.co.uk/getting-the-class-of-an-object-in-as3/on каждого из дочерних элементов, чтобы определить, какой это тип, тогда, если это TextInput или любой другой, зарегистрируйте соответствующий событие для вызова вашей обычно используемой функции, просто убедитесь, что оно имеет общее событие в качестве параметра, так как все другие события будут его подклассами).

Насколько я знаю, нет простого способа прослушать изменения в базовых данных из ArrayCollection или другой оболочки данных ListCollectionView. Частично проблема заключается в том, что добавленные в коллекцию элементы не требуются для реализации какого-либо интерфейса, позволяющего регистрировать слушателей. То есть элементы данных не обязательно являются диспетчерами событий, единственный способ передачи этой информации в Список будет, если элементы данных будут иметь дескриптор во всех списках, которые содержат этот элемент, и они помечают что-то в списках для указать "грязный", когда любое свойство установлено. Все это достижимо в рамках ограничений языка, но не предоставляется "из коробки", поскольку их использование, вероятно, ограничено и может потенциально излишне раздувать использование процессором ListCollectionView в других случаях.

Другие вопросы по тегам