2009-08-12 2 views
0

Значения компонентов Flex инициализируются методом init. В потоке приложения, Как обновить значение данных компонента mxml; поскольку init вызывается только при запуске.Рекомендации по определению и обновлению компонента MXML в приложении Flex

Пример MXML компонента может быть так просто, как кнопки метки или текста в качестве комплекса в качестве ретранслятора которого поставщик данных является веб-сервис (означает свежий quesy должны быть сделаны, чтобы вытащить данные и обновить DataProvider ретранслятора)

+0

Просьба привести пример типа данных, которые вы хотите обновить. –

ответ

0

Если dataprovider представляет собой коллекцию или массив, он будет обновляться, поскольку элементы добавляются или удаляются из коллекции. Вы можете прослушать событие CollectionEvent.CollectionChange, чтобы увидеть, когда изменяется коллекция.

Я не совсем уверен, что вы имеете в виду? Вы о привязке?

+0

Массивы не запускают события при внутренних изменениях, например. когда элемент подталкивается к нему, и поэтому ваше утверждение неверно. Однако ArrayCollection запускает события и должен использоваться так же, как вы говорите. –

0

Если вы хотите переустановить весь элемент управления, вы можете создать событие «перезагрузки» и обработчик для сброса выполнить то же поведение, что и код инициализации.

Это лучший, что я могу обойтись без более подробной информации ...

+0

может предоставить мне код шаблона mxml-ретранслятор или любой компонент. это прояснит идею – 2009-08-13 03:52:32

0

вы должны создать себе сеттер и добытчик для свойств, которые вы хотите изменить и обновление требуется впоследствии. например:

private var _tmp : String = ''; 
public function set tmp(val : String) : void { 
     this._tmp = val; 
     this.doOtherDataRefreshNeeded(); 
} 
public function get tmp() : String { 
     return this._tmp; 
} 

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

для простых компонентов mxml как текстов и входов, используйте привязки {} для своих значений данных. они должны обновляться сразу же после изменения данных. если нет, вызовите метод .invalidateNow() для принудительного обновления.

+0

На самом деле это не лучшие практики. Сеттер вполне можно назвать десять, сто или даже тысячи раз в течение одного кадра, что означало бы проведение нескольких ненужных вычислений. Лучшей практикой является вызов одного из методов недействительности (возможно, invalidateProperties), а затем во время фазы фиксации (commitProperties) выполняется фактическая работа с обновлением. Это гарантирует, что, хотя метод недействительности может быть вызван несколько раз в течение одного кадра, фактическая работа выполняется только один раз. –

+0

Я думаю, что invalidateProperties - это способ по умолчанию лучше контролировать компоненты пользовательского интерфейса – 2009-08-24 22:26:11

0

use ValidateNow() метод в компоненте mxml в методе обновления

Смежные вопросы