TST ответ правильный - привязки односторонние. Я предполагаю, что вы уже знали это, поскольку вы пытались установить обратную привязку в вашем методе init ().
Однако есть две проблемы с вашим методом init ().
Во-первых, неясно, куда вы поместили этот метод init () или как он вызывается.
Во-вторых, вы получили параметры метода в обратном направлении.
Что я обычно делаю в подобных ситуациях, это либо использую тег mxml, как предложил первый респондент, либо, если я в коде AS3, я делаю что-то вроде этого:
private function onCreationComplete(event:Event):void
{
BindingUtils.bindProperty(obj, "mobileNumber", mobileNumberText, ["text"]);
}
Обратите внимание на пару моментов здесь:
1 / BindingUtils.bindProperty () - это "левая сторона = правая сторона". Таким образом, это все равно что писать
obj.mobileNumber = mobileNumberText.text;
Или, ближе к тому, что «на самом деле происходит» внутри связывающих классов:
obj["mobileNumber"] = mobileNumberText["text"];
2 / BindingUtils.bindProperty () фактически хочет массив в качестве последнего параметра. Это сделано для того, чтобы вы могли делать «связанные свойства» логически, например:
obj.mobileNumber = mobileNumbersGrid.selectedItem.text;
что будет
BindingUtils.bindProperty(obj, "mobileNumber", mobileNumbersGrid,
["selectedItem", "text"]);
3 / Рекомендация: если вы связываете цепочку свойств, начальный член которой является собственностью вашей (этой), напишите ее как:
BindingUtils.bindProperty(obj, "mobileNumber", this,
["mobileNumbersGrid", "selectedItem", "text"]);
Это аккуратно обрабатывает случай, когда ваш «правосторонний объект» сам экземпляр this.mobileNumbersGrid заменяется новым экземпляром объекта.
4 / Если вы когда-либо переназначите obj («левая сторона»), вам нужно создать новую привязку к новому экземпляру obj. Как правило, вы делаете это, превращая локальное свойство obj в пару метод получения / установки следующим образом:
public function get obj():MyObject
{
return _obj;
}
private var _obj:MyObject = new MyObject();
public function set obj(value:MyObject):void
{
_obj = value;
BindingUtils.bindProperty(_obj, "mobileNumber", mobileNumberText, ["text"]);
}
(Примечание: чтобы быть очень осторожным, вы должны спрятать возвращаемое значение из BindingUtils.bindProperty (), который является экземпляром ChangeWatcher, и отключить функцию (), чтобы старый объект не получил изменения свойств)
Надеюсь, это поможет. Привязки являются одними из самых мощных инструментов в среде Flex, но при плохом использовании могут вызвать много головной боли. В частности, следует помнить об утечках памяти и «неожиданных обновлениях», когда привязки остаются «зависшими».