我使用了一个表示模型的可绑定变量,并通过几个嵌套组件传递它。安装程序不总是被触发
顶级组件是我的变量:
[Bindable]
private var meetingInfo:MeetingInfoModel;
我初始化它在处理程序 “预初始化” 事件:
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}"/>
我在哪里具有相同的设定器/吸气剂设置。然后我再次将它传递到另一个嵌套组件:
<documentShare:AttachmentFilesPanel meetingInfo="{meetingInfo}" />
在该组件我有一个DATAGROUP部件,其中它结合“meetingInfo”一个的ItemRenderer:
<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,在每个嵌套组件的制定者得到正确调用,直到....
...这是AIR应用程序,你要知道...
我注销并返回。然后,最后一个嵌套组件中的setter/getter这次不会被触发。
为什么,哦,为什么会发生这种情况?
我已经解决了几天,无法弄清楚我的生活。
感谢您的任何有用的提示!
@ fsbmain的回答是正确的。但是,如果必须将模型对象的实例一直传递到显示层次结构中,可能会通过不关心此特定模型的对象,我会考虑使用IoC(Inversion of Control)容器将数据仅注入到这是必需的。目前[SwiftSuspenders](https://github.com/tschneidereit/SwiftSuspenders)是我选择的武器,因为它是唯一的“框架”,并且不会添加任何所谓的MVC功能。 – RIAstar
非常好的主意,非常感谢。我会检查出来的。 – fumeng