Передача данных из всплывающего окна во Flex - PullRequest
2 голосов
/ 07 декабря 2010

У меня есть веб-приложение, которое содержит сетку данных.Двойной щелчок на любой строке этой сетки откроет всплывающее окно (назовем его popup1).Теперь это popup1 снова открывает новое всплывающее окно (назовем его popup2).

Когда я закрываю popup2, мне нужно передать объект в popup1.Какой самый простой способ сделать это?

Заранее спасибо

(PS: открывая popup2 из popup1, я добавляю прослушиватель событий для события Close popup2)

Ответы [ 3 ]

2 голосов
/ 07 декабря 2010

Я бы создал пользовательское событие, которое вы бы отключили при закрытии popup2. Непосредственно перед закрытием popup2 добавьте свои данные в событие и запустите его. Popup1 будет иметь прослушиватель событий для MyCustomEvent и может получить доступ к свойству myDataToPass. Что-то вроде:

MyCustomEvent:

package
{           
    import flash.events.Event;
    import mx.collections.ArrayCollection;

    public class MyCustomEvent extends Event
    {
        public var myDataToPass:ArrayCollection;

        public function MyCustomEvent (type:String, bubbles:Boolean=true, cancelable:Boolean=false)
        {
            super(type, bubbles, cancelable);
        }
    }
}

Передача данных:

var newEvent:MyCustomEvent = new MyCustomEvent();
newEvent.myDataToPass = <your data here>;
dispatchEvent(newEvent);
0 голосов
/ 07 декабря 2010

ИМХО решение, предложенное bu @ ajay87, неверно.

popup1 не должен «знать» popup2, они должны быть отделены, представления не должны вызывать функцию в других представлениях.

такого родаповедение должно быть реализовано с использованием событий, вы должны открыть popup2, затем диспетчеризировать событие (прослушать его во всплывающем окне 2).

наоборот, вы должны получать данные, используя событие, отправленное из всплывающего окна 2, не активировать функцию или что-либо подобное.

таким образом, ваши представленияразвязан и не сломит вас, измените реализацию, также вы сможете показывать всплывающее окно 2 без этой функции и наоборот.

0 голосов
/ 07 декабря 2010

Я бы просто создал и вызвал новую функцию, которая создаст окно popup2 (через PopUpManager) и передаст объект этой функции. Затем дочерний элемент popup2 (предположительно, пользовательский компонент окна заголовка или панели) может быть заполнен из объекта или вы можете передать ему объект.

  private function displayPopUp2(object:Object):void
    {
    //create an instance of your window
     var popup2:CustomComponentPopUp2 = new CustomComponentPopUp2();
    //pass the object data to a function within side this to populate fields, or this could be done through constructor.

     popup2.populateData(object);

    //then use popup manager to display popup... passing the popup2 as it's child.
    PopUpManager.addPopUp(popup2);

    }

Это один из способов сделать это.

...