Frage

Ich bin nicht sicher, ob ich bin Missverständnis in Flex die Bindung. Ich verwende Cairngorm Framework. Ich habe die folgende Komponente mit Code wie:

        [Bindable]
        var _model:LalModelLocator = LalModelLocator.getInstance();
....
<s:DataGroup    dataProvider="{_model.friendsSearchResults}"
                     includeIn="find"
                     itemRenderer="com.lal.renderers.SingleFriendDisplayRenderer">
            <s:layout>
                <s:TileLayout orientation="columns"    requestedColumnCount="2" />
            </s:layout>         </s:DataGroup>

im Modell Locator:

[Bindable]
public var friendsSearchResults:ArrayCollection = new ArrayCollection();

Im Inneren des Elementrenderers gibt es einen Knopf, der einen Befehl und innerhalb der Befehlsergebnisse ruft gibt es eine Zeile wie folgt aus:

model.friendsSearchResults = friendsSearchResults;

Setzen Bruchstellen und Schreiten durch den Code, den ich bestätigt, dass dies wie aufgerufen wird und die friendsSearchResults aktualisiert wird.

Zu meinem Verständnis, wenn ich eine bindungsfähige Variable aktualisieren sollte es automatisch wieder macht die s: Datagroup, die eine Datenprovider dieser Variablen hat.

War es hilfreich?

Lösung

Es gibt nichts, offensichtlich falsch in dem Codebeispiel. Es sollte funktionieren so dass ich denke, es gibt ein Problem an anderer Stelle.

Ich würde empfehlen, einen Haltepunkt einstellen, wo die dataProvider zugeordnet ist, und auch, wo model.friendsSearchResults zugeordnet ist. Stellen Sie sicher, sie zeigen beide auf die gleiche Objektinstanz. Dann Schritt durch die Eigenschaftszuweisung und entsprechendes Ereignis.

Um Debugging bei einfacher Sie verwenden ein benanntes Ereignis anstelle des Standard wechseln. Mit einer benannten Veranstaltung, in Ihrer speziellen Immobilie interessierten nur Ereignis-Listener werden anstelle von irgendwelchen Zuhörern ausgelöst für jede Eigenschaftsänderung zu hören. Dies ist einfacher zu debuggen und läuft schneller. Ändern Sie zum Beispiel:

[Bindable]
public var results:ArrayCollection;

[Bindable("resultsChanged")]
private var _results:ArrayCollection;
public function get results():ArrayCollection {
    return _results;
}
public function set results(value:ArrayCollection):Void {
    _results = value;
    dispatchEvent(new Event("resultsChanged"));
}

Eine andere Sache im Auge zu behalten ist, dass Bindungen bestimmte Fehler wie NULL-Verweis Ausnahmen verbergen. Sie gehen davon der Wert einfach noch nicht verfügbar ist und unterdrücken die Fehler. Stepping durch die Zuordnung und damit verbundene Bindungen helfen, ein Problem wie dieses zu finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top