0

モデルを表すバインド可能な変数を使用し、それをいくつかのネストされたコンポーネントに渡します。

トップレベルのコンポーネントは私の変数です:

[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}"/>

同じセッター/ゲッターをセットアップした場所。次に、ネストされた別のコンポーネントに再度渡します。

<documentShare:AttachmentFilesPanel meetingInfo="{meetingInfo}" />

そのコンポーネントには、「meetingInfo」にバインドする DataGroup コンポーネントの 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 アプリです。

ログアウトして再度ログインします。次に、最後にネストされたコンポーネントのセッター/ゲッターは今回は起動されません。

どうして、どうして、こうなるの?

私は数日間トラブルシューティングを行ってきましたが、一生解決できません。

役立つヒントをありがとう!!

4

1 に答える 1

1

コードはシングルトンであることMeetingInfoModel.getInstance();を示唆してMeetingInfoModelいますね。その場合、setter は 1 回だけトリガーされます。これは、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トリガーされません。

于 2013-01-22T19:44:22.143 に答える