Ottenere la piena modello di oggetto da una combobox in ExtJs?

Se ho un negozio eseguito il combobox di selezione che genera un evento sotto ExtJS 4, come posso fare per ottenere l’oggetto completo che è rappresentato dalla selezione?

InformationsquelleAutor James McMahon | 2012-07-19



2 Replies
  1. 22

    In generale, è possibile utilizzare il findRecordByValue metodo del componente combobox:

    combobox.on('change', function(combobox, newValue, oldValue) {
    
       //Get the old and the new records.
       //NOTE: The underlying store is not guaranteed to 
       //      contain an associated record.
       var oldRecord = combobox.findRecordByValue(oldValue);
       if (oldRecord) {
          //Do something...
       }
    
       var newRecord = combobox.findRecordByValue(newValue);
       if (newRecord) {
          //Do something...
       }
    });
    • Interessante. Io sono abbastanza nuovo extJS, qual è la migliore pratica qui?
    • Buona domanda. A rischio di sembrare cliché, dipende dal tuo caso d’uso. Penso che ci sono 2 cose fondamentali da tenere a mente. Primo, il select evento è un UI evento, mentre il change evento è un evento di modifica dello stato. Secondo, una combobox usa il suo store per agevolare il passaggio sottostante valore del campo tramite l’interfaccia utente. Come risultato, il select evento sempre corrisponde a un record nell’archivio sottostante, ma il change evento potrebbe non.
    • Hmm io onestamente non so che rispondere a mark come corretta, perché, come hai sottolineato, la risposta giusta dipende dal caso d’uso.
    • var data = combo.findRecordByValue(combo.getValue()).data;
    • Questo metodo è documentato come privato in ExtJS 4.0.0 – 4.0.4. È reso pubblico nel ExtJS 4.0.5. Si può ancora usare in le versioni di cui sopra, non solo è considerato ‘best practice’.
  2. 6

    Capito quasi subito dopo aver postato la mia domanda.

    Il mio problema era che non era vincolante per l’evento sbagliato, io sto usando un ‘cambiamento’ invece di ‘selezione’.

    L’evento di selezione dà il record con l’oggetto completo in esso contenute.

    • Essere consapevoli del fatto che il select evento viene attivato solo se il valore cambia, perché l’utente fa clic su un’opzione dall’elenco. Se setValue è chiamato a livello di codice, solo change sarà il fuoco.

Lascia un commento