Я ищу способ вызова метода для ВСЕХ дочерних элементов DataGroup из DataGroup. Проблема в том, что при использовании события creationComplete для вызова метода дочернего метода этот метод вызывается только один раз для каждого объекта itemrenderer (child). после того, как элемент был нарисован один раз.Вызвать метод дочернего элемента datagroup
Теперь я хочу, чтобы дочерний компонент вызывал функцию каждый раз, когда содержащаяся в ней датагруппа меняет свои данные. Использование «updateComplete» или «dataChange» внутри компонента children (itemrenderer) будет работать, НО «updateComplete» и «dataChange» вызывается каждый раз, когда я изменяю представление (например, прокручиваю список) - это не то, что я хочу.
// edit Я также попытался получить детей, перейдя через массив parent.dataprovider и массив parent.getchild без везения, это означает, что элементы имеют значение null, но когда я проверяю режим отладки, это не так. однако в любом случае должен быть более простой способ.
проблема заключается в том, что я должен запускать код в дочерних элементах группы данных каждый раз, когда изменяется датапараметр datagroup. – masi
@masi Вы находитесь в сложной ситуации, потому что в идеальном мире, если компонент знает о некотором компоненте «выше» в иерархии отображения; это перерыв в инкапсуляции, который повторяет использование domonoshes. Один из подходов - запустить код внутри компонента itemRenderer, используя событие dataChange. Другим может быть прослушивание события dataProviderChanged внутри средства визуализации с использованием свойства владельца или родителя. – JeffryHouser
Да, я знаю, что это не самая лучшая практика - но я в спешке и нуждаюсь в ней, чтобы работать, поэтому я не забочусь о лучших практиках atm :-) Во всяком случае, как я уже сказал, использование события dataChanged плохо, потому что оно также запускается при прокрутке , Но мне просто удалось заменить List на группу данных. И похоже, что в Datagroup dataChanged запускается только тогда, когда dataProviderChanged, так что теперь работает, и я отмечаю, что вы отвечаете как правильно. Thx m8! – masi