Помогите с контейнерами - PullRequest
       0

Помогите с контейнерами

0 голосов
/ 14 апреля 2011

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

  1. использовать прослушиватель событий для каждого компонента, если что-то изменило, сделать флаг истинным ... и скрыть проверку события, если флаг равен true, отправить вызов бэкенду.

  2. прослушиватель событий на уровне контейнера .. если изменение суммы в дочерних компонентах через пузырьковый контейнер знает, отправлено ли событие sum.nd делает флаг истинным.

У меня есть сомнения с контейнером ...

  • Могу ли я использовать контейнер и как?
  • Причина, по которой я не могу использовать контейнер?
  • Каковы плюсы и минусы в любом случае?

Ответы [ 3 ]

0 голосов
/ 15 апреля 2011

Я бы порекомендовал использовать dataProvider с возможностью их сравнения.Например, если вы меняете текст с помощью ввода текста, вы можете сделать что-то вроде этого:

[Bindable]
private var myDataProvider:Object = new Object();

private function creationCompleteHandler():void {
  myDataProvider.updated = false;
  myDataProvider.defaultValue = 'default';
  myDataProvider.defaultValueTwo = 'default';
}

и т. Д.

Затем в вашем mxml вы можете получить что-то вроде этого:

<mx:TextInput id="myText" text="{myDataProvider.defaultValue}" change="myDataProvider.defaultValue=myText.text; myDataProvider.updated=true;" />

Наконец, в вашем событии скрытия вы можете сделать следующее:

private function hideEventHandler( event:Event ):void {
  if( myDataProvider.updated ){
    // Call your RemoteServices (or w/e) to update the information
  }
}

Таким образом, когда что-то меняется, вы можете обновлять свой dataProvider и иметь доступ к новой информации каждыйвремя.

Надеюсь, это поможет!

0 голосов
/ 15 апреля 2011

Данные модели вашего друга!

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

У меня всегда есть набор привязок ключей для генерации фрагмента кода, подобного этому ...

    private var _foo:String;

    public function get foo():String
    {
        return _foo;
    }

public function set foo(value:String):void
{
    if(_foo == value)
        return;

    var oldVal:String = _foo;
    _foo = value;

    this.invalidateProperty("foo", oldVal, value);
}

Если бы в ваших данных использовались такие методы получения / установки, было бы очень легко проверить изменение на уровне модели, полностью исключив представление из процесса.

0 голосов
/ 15 апреля 2011

Я использовал подход, аналогичный вашему первому варианту, в нескольких моих прошлых проектах.В событии change для каждого элемента управления моей формы я вызываю небольшую функцию, которая просто устанавливает флаг changesMade на true в моей модели.Когда пользователь пытается отойти от моей формы, я проверяю флаг changesMade, чтобы узнать, нужно ли мне сохранять информацию.

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