Ho un popup modale che viene visualizzato ogni volta che un editor tenta di salvare un componente con alcuni valori (un campo data nel passato in questo caso).Anguilla - Aggiornamento del valore di un campo da un popup?
In questo popup mostro all'editor alcune opzioni (molto simili alla finestra di dialogo predefinita "Apri elemento condiviso") e un pulsante OK/Annulla. Su Annulla sparo l'evento "cancella" e l'editor ritorna alla schermata di modifica, tutto bene qui. Su "OK" voglio cambiare il valore del campo per abbinare qualunque sia l'editor selezionato, quindi salvare.
Ho provato a utilizzare un approccio con FieldBuilder e il campione Boris menzionato su this other topic ma non riesco ad accedere al campo dalla finestra di dialogo popup.
Qualche suggerimento su come posso andare a modificare l'xml dell'articolo (potrebbe essere anche una pagina) da un popup modale?
EDIT: codice utilizzato in getControlForFieldName
function getControlForFieldName(name) {
var fieldBuilder = $display.getView().properties.controls.fieldBuilder;
var fieldsContainer = fieldBuilder.properties.input;
var fieldsNode = fieldsContainer.getElement();
var fieldContainer = $dom.getFirstElementChild(fieldsNode);
while (fieldContainer) {
var labelNode = $dom.getFirstElementChild(fieldContainer);
var fieldNode = $dom.getNextElementSibling(labelNode);
var control = fieldNode.control;
if (control.getFieldName() == name) {
return control;
}
fieldContainer = $dom.getNextElementSibling(fieldContainer);
}
}
EDIT # 2
Dopo il consiglio di Frank, e qualche aiuto da Jaime & Frank in linea, ho preso a lavorare come segue:
- Il popup viene chiamato da un'estensione di comando (Salva & Chiudi nel mio caso)
- Il command.js specifica un gestore di eventi che viene chiamato il "submit" (== OK è stato premuto)
$evt.addEventHandler(p.dialogPopup, "submit",
this.getDelegate(this._onPopupSubmit));
Nella mia comparsa sto passando l'elemento selezionato (si tratta di un ID parola chiave) al gestore di eventi :
this.fireEvent("submit", { id: select.options[select.selectedIndex].value });
e ora di nuovo nel gestore di eventi _onPopupSubmit(e)
ho appena letto e.data.id, caricare questa parola chiave, ottengo immobili come ID & titolo, e aggiornare i metadati della voce usando item.setMetadata ("nuova metadati con valori aggiornati ").
semplice :)
Puoi condividere il codice che hai nel tuo popup? Molto probabilmente ti manca un "genitore" da qualche parte. –