Domanda

Io non sono sicuro se sto fraintendimento la rilegatura in Flex.Sto usando Cairngorm quadro.Ho il seguente componente con il seguente codice:

        [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>

nel modello locator:

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

All'interno della voce renderer c'è un pulsante che richiama un comando e all'interno del comando di risultati c'è una riga come questa:

model.friendsSearchResults = friendsSearchResults;

Mettere punti di sosta e passo il codice mi ha confermato che questo, come viene chiamato, e il friendsSearchResults viene aggiornato.

Per la mia comprensione se aggiorno associabile variabile, esso dovrebbe automaticamente il rendering s:Gruppo che ha un dataProvider di quella variabile.

È stato utile?

Soluzione

Non c'è nulla di evidentemente sbagliato nel codice di esempio.Dovrebbe funzionare così, credo ci sia un problema altrove.

Consiglierei di impostare un punto di interruzione in cui il dataProvider è ricevuto e anche dove model.friendsSearchResults è assegnato.Assicurarsi che si sta puntando per la stessa istanza di oggetto.Quindi il passaggio attraverso l'assegnazione di proprietà e l'evento corrispondente.

Per facilitare il debugging si può passare all'uso di un evento denominato invece di quella di default.Con un evento denominato, solo ascoltatori interessati nella vostra proprietà particolare vengono attivati invece di tutti gli ascoltatori di ascolto per qualsiasi modifica delle proprietà.Questo è più facile per eseguire il debug e verrà eseguito più velocemente.Ad esempio, modificare:

[Bindable]
public var results:ArrayCollection;

per

[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"));
}

Un'altra cosa da tenere a mente è che le associazioni di nascondere alcuni errori come riferimento null eccezioni.Essi assumono il valore, semplicemente, non è ancora disponibile ed eliminare l'errore.Passo attraverso la assegnazione e le relative associazioni di aiuto per trovare un problema come questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top