Двухстороннее связывание данных в ActionScript вызывает переполнение стека - PullRequest
0 голосов
/ 21 июля 2010

Я связываю два объекта AutoCompleteModified друг с другом;Это означает, что вы вводите один, и он выбирает правильный объект в другом.Он отлично работает, когда я определяю его в MXML:

Однако пользователь может добавить новую строку в сетку, а затем я устанавливаю привязку и объекты с помощьюActionScript и выдает «неопределенную» ошибку: строка ChangeWatcher 427 / wrapHandler.

var innerHBox: HBox = new HBox ();

var dtc_acm: AutoCompleteModified = new AutoCompleteModified ();dtc_acm.dataProvider = data2;dtc_acm.labelField = 'id';

var cp_acm: AutoCompleteModified = new AutoCompleteModified ();cp_acm.dataProvider = data2;cp_acm.labelField = 'name'; cp_acm.width = this.CP1.width;

BindingUtils.bindProperty (dtc_acm, selectedIndex ', cp_acm, selectedIndex');

BindingUtils.bindProperty(cp_acm, selectedItem, dtc_acm, selectedItem)

innerHBox.addChild (dtc_acm);innerHBox.addChild (cp_acm);

Я не понимаю, что здесь может происходить.Кто-нибудь может увидеть потенциальные проблемы в моем коде?Если я сохраню одностороннюю привязку, то она будет работать нормально.Но оба выкидывают эту ошибку.Есть ли что-то не только в двустороннем действии, но и в добавлении компонентов, которых еще нет на сцене?

Спасибо за любые полезные советы,

Мэтт

Ответы [ 2 ]

1 голос
/ 31 августа 2010

Я пытаюсь сделать то же самое. Он работает в MXML, но не в AS. Например, это работает:

<mx:TextArea id="t1" verticalScrollPosition="{t2.verticalScrollPosition}" height="200"/>
<mx:TextArea id="t2" verticalScrollPosition="{t1.verticalScrollPosition}" height="200"/>

Если я прокручиваю одну из TextAreas, то другая тоже прокручивается. Однако попытка сделать то же самое в actioncript вызывает переполнение стека (бесконечный цикл)

BindingUtils.bindProperty( _t1, 'verticalScrollPosition', _t2, 'verticalScrollPosition' );
BindingUtils.bindProperty( _t2, 'verticalScrollPosition', _t1, 'verticalScrollPosition' );

Я использовал опцию компилятора -keep-генерированный-actionscript и посмотрел на сгенерированный asctionscript для примера mxml, и он создает пару объектов mx.binding.Binding, и он выглядит как ключ устанавливает свойство twoWayCounterpart . Я еще не пытался имитировать этот код, но он может вам помочь.

0 голосов
/ 21 июля 2010

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

Вы пытались изменить (необязательно) 5-йпараметр в bindProperty для истины?Этот параметр является commitOnly и по умолчанию имеет значение false.Это может решить вашу проблему.

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

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

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