2009-08-19 4 views
0

Я разработал компонент, который представляет собой комбинацию из нескольких элементов (холст, метки и т. Д.), Но когда я пытаюсь связать его с переменной, например: {stationXML.getItemAt (1) .AAA. @ value}, он не работает. Прежде чем объединить все элементы в компоненте, все они были в основном файле MXML, с которого они работали.Как я могу привязать к глобальным переменным внутри моего компонента?

Не уверен, имеет ли значение, но переменная arraycollection "stationXML" объявлена ​​внутри файла "Station.as".

Любые идеи?

ответ

1

Когда вы говорите «глобальная переменная», где и как именно это объявлено? В приложении Flex нет такой вещи, как глобальная переменная. Если вы объявите что-то в своем основном классе MXML, который не делает его глобальным, он делает его доступным экземпляром этого основного класса приложения. Если вы хотите получить доступ к этому значению в компоненте, вы должны передать его этому компоненту. В качестве альтернативы вы можете реализовать одноэлементный класс, чтобы эффективно обеспечить «глобальный» доступ к этим значениям.


например, в компоненте, создайте открытое свойство:

public var xmlData:XML; 

затем в главном MXML, передайте значение вниз:

<xxx:MyComponent id="foo" x="10" xmlData="{theValue}"/> 
+0

Прошу прощения за неправильное заявление. Элемент объявляется как «общедоступная» переменная (bindable) в файле Station.as. Как передать это значение до этого компонента? – Seidleroni

+0

Вы должны определить общедоступное свойство компонента, которое вне «вещей» может быть установлено. Затем просто установите это свойство из основного mxml. См. Мое редактирование выше. – Marplesoft

+0

Большое спасибо, это сработало отлично! Единственное изменение заключалось в том, что мне пришлось привязать переменную (xmlData) внутри компонента. Однако один вопрос. Будет ли приложение создавать совершенно новую переменную XML внутри компонента (удваивая память, занятую по существу тем же самым элементом), или это скорее как указатель? – Seidleroni

0

делает Station.as расширяет EventDispatcher и не обладает ли класс (или свойство) тегом метаданных [Bindable]? Для привязки к работе ваш класс должен расширять EventDispatcher где-то в своей структуре наследования, чтобы он мог уведомлять привязывающие «клиенты», которые он обновил.

+0

Station.as не продлить EventDispatcher , Как мне это сделать и что он делает? Элемент объявляется как связанный, например: [Bindable] public var stationXML: ArrayCollection = new ArrayCollection; – Seidleroni

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