Передача параметров конструктора для настраиваемых компонентов Flex на основе MXML

Я реализовал пользовательские компоненты MXML и хотел бы передать параметры конструктору:

 newUser = new userComp("name");

вместо использования методов набора.

Возможно ли это, если пользовательские компоненты были созданы в MXML (с помощью метода initialize=myPseudoCostructor()?)

Или я могу установить параметр только с дополнительной строчкой кода?


person aneuryzm    schedule 18.04.2010    source источник


Ответы (2)


Вы не можете передавать переменные в конструктор компонента MXML. Я даже не верю, что можно > определить конструктор в компоненте MXML, хотя я могу ошибаться. Однако вы можете настроить свойства, которые имеют значения по умолчанию и изменяются после построения.

Вы также можете создать функцию инициализации, которая также вызывается после построения.

person bedwyr    schedule 18.04.2010
comment
Хорошо, поэтому, если я создам пользовательский компонент с помощью mxml, я могу установить переменные только позже, вызывая его методы. - person aneuryzm; 19.04.2010
comment
Вы можете определить конструктор в / в компоненте MXML, и вы даже можете иметь параметры в этом конструкторе; но ограничение состоит в том, что все параметры конструктора должны быть необязательными. - person Panzercrisis; 24.06.2013
comment
Я получаю Multiple constructor definitions found. Constructor may not be defined in <Script /> code. Здесь написано здесь (в примечании), что это явно запрещено. - person dm78; 05.12.2013

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

Внутри компонента (именуемого ради аргумента MyComponent):

public function init(...args):MyComponent {

    //Add constructor code here

    return this;    
}

... при создании компонента вы можете вызвать его следующим образом:

var myComp:MyComponent = new MyComponent().init(args);

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

person MickMalone1983    schedule 20.02.2013