Простой способ узнать, если данные грязные - PullRequest
1 голос
/ 06 августа 2011

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

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

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

1 Ответ

1 голос
/ 06 августа 2011

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

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

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

...