У меня есть довольно простая вещь: datagrid, который отображает некоторые элементы. нажатие на элемент приведет к всплывающему редактору (поскольку элемент имеет много свойств и не может быть отредактирован прямо в datagrid).всплывающий редактор для элементов datagrid - зависает браузер
всплывающее окно содержит только форму и ссылку [Связывание] к редактируемому элементу (который передается из обработчика itemClick файла datagrid). Значения по умолчанию формы берутся путем привязки к соответствующим свойствам элемента с помощью {} понятия, тогда как значения формы привязаны к элементу с использованием тегов mx: Binding.
и теперь проблема. когда всплывающее окно воспитывается в первый раз, все в порядке. однако, когда после закрытия всплывающее окно снова появляется, нажимая на один и тот же элемент, браузер зависает (afaik из-за того, что наблюдатели за изменениями бесконечно увольняются, что приводит к переходу stackoverflow или что-то подобное).
У нас такое же поведение в Safari, IE и Chrome, поэтому я думаю, что это не связано с чем-то связанным с браузером. удаляя либо [Bindable] из ссылки на элемент во всплывающем меню, либо mx: теги привязки от редакторов подавляют проблему, но, конечно, редактирование больше не работает.
Я уже несколько дней стучу головой о стену, но все равно не могу заставить ее работать. звонит ли он кому-нибудь, что здесь может быть неправильно (что может быть проще, чем это)?
вот код всплывающего окна:
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" title="Details"
showCloseButton="true" close="PopUpManager.removePopUp(this);" creationComplete="PopUpManager.centerPopUp(this)">
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import my.Detail;
[Bindable] private var _documentDetail:Detail;
public function set documentDetail(value:Detail):void {
this._documentDetail = value;
}
public function set readOnly(value:Boolean):void {
if (value) {
this.currentState = "read-only";
}
}
]]>
</mx:Script>
<mx:states>
<mx:State name="read-only">
<mx:SetProperty target="{startDate}" name="enabled" value="false"/>
<mx:SetProperty target="{comments}" name="enabled" value="false"/>
</mx:State>
</mx:states>
<!--
<mx:Binding source="this.startDate.selectedDate" destination="_documentDetail.startDate"/>
<mx:Binding source="this.comments.text" destination="_documentDetail.comment"/>
-->
<mx:VBox width="100%" height="100%">
<mx:FormItem label="{resourceManager.getString('eRequestAppli','startdate')}:" labelWidth="160" width="100%">
<mx:DateField id="startDate" width="100%" selectedDate="{_documentDetail.startDate}" formatString="{resourceManager.getString('eRequestAppli', 'dateformat')}" editable="false"/>
</mx:FormItem>
<mx:FormItem label="{resourceManager.getString('eRequestAppli','comments')}:" labelWidth="160" width="100%" height="79">
<mx:TextArea id="comments" width="100%" height="100%" text="{_documentDetail.comment}" editable="false"/>
</mx:FormItem>
</mx:VBox>
</mx:TitleWindow>
вот как я называю это:
private function show(detail:Detail, readOnly:Boolean=false):void {
var popup:fxc_ProposalDetail =
fxc_ProposalDetail(PopUpManager.createPopUp(UIComponent(Application.application), fxc_ProposalDetail, true));
popup.documentDetail = detail;
popup.readOnly = readOnly;
}
Некоторые примеры кода помогут, особенно тот, кто отвечает за настройку привязок. –
добавлен код вызова и всплывающий код –