我使用一个表示Model的可绑定变量,并通过几个嵌套组件将其传递下去。
顶级组件是我的变量:
[Bindable]
private var meetingInfo:MeetingInfoModel;
我在“preinitialize”事件的处理程序中初始化它:
meetingInfo = MeetingInfoModel.getInstance();
然后我将它传递给1个组件:
<meetingViewStack:MeetingViewStack meetingInfo="{meetingInfo}"/>
在该组件中,我有以下内容:
private var _meetingInfo:MeetingInfoModel;
public function set meetingInfo( model:MeetingInfoModel ):void{
_meetingInfo = model;}
[Bindable]
public function get meetingInfo():MeetingInfoModel{
return _meetingInfo;
}
然后我将该变量传递给另一个嵌套组件:
<documentShare:DocumentPanel meetingInfo="{meetingInfo}"/>
我设置了相同的setter / getter。然后我再次将它传递给另一个嵌套组件:
<documentShare:AttachmentFilesPanel meetingInfo="{meetingInfo}" />
在该组件中,我有一个DataGroup组件的ItemRenderer,它绑定到“meetingInfo”:
<s:DataGroup id="attachmentsList"
width="100%"
clipAndEnableScrolling="true"
dataProvider="{meetingInfo.docsAndAttachmentsList}"
itemRenderer="com.fmr.transporter.view.documentShare.DocumentUploadRenderer"
visible="{meetingInfo.docsAndAttachmentsList.length > 0}">`enter code here`
当我更新“meetingInfo.docsAndAttachmentsList”ArrayCollection时,每个嵌套组件中的setter都会被正确调用,直到....
...这是一款AIR应用,请注意......
我退出并重新登录。然后,这次不会触发最后一个嵌套组件中的setter / getter。
为什么,为什么,这会发生?
我已经进行了几天的故障排除,并且无法解决我的生活问题。
感谢任何有用的提示!!
答案 0 :(得分:1)
代码MeetingInfoModel.getInstance();
暗示MeetingInfoModel
是单身人士,是吗?如果是这样,setter将只触发一次,因为mxmlc生成对象实例更改的检查,生成的SDk 4.5.1代码将如下所示:
[Bindable(event="propertyChange")]
public function set meetingInfo(value:MeetingInfoModel):void
{
var oldValue:Object = this.meetingInfo;
if (oldValue !== value)
{
this._883716727meetingInfo = value;
if (this.hasEventListener("propertyChange"))
this.dispatchEvent(mx.events.PropertyChangeEvent.createUpdateEvent(this, "meetingInfo", oldValue, value));
}
}
因此,如果您没有重新创建MeetingInfoModel
的实例,则不会触发setter。