Ich habe ein modales Popup, das erscheint, wenn ein Editor versucht, eine Komponente mit einigen Werten zu speichern (in diesem Fall ein Datumsfeld in der Vergangenheit).Anguilla - Aktualisieren eines Feldes Wert von einem Popup?
In diesem Popup zeige ich dem Editor ein paar Optionen (sehr ähnlich dem Standard "Open Shared Item" -Dialog) und eine OK/Cancel Button Combo. Bei Abbruch feuere ich das "Abbrechen" -Ereignis und der Editor geht zurück zum Bearbeitungsbildschirm, alles gut hier. Auf "OK" möchte ich den Wert des Feldes so ändern, dass es mit dem gewählten Editor übereinstimmt, und dann speichern.
Ich habe versucht, einen Ansatz mit FieldBuilder und die Probe Boris unter this other topic erwähnt, aber ich kann nicht auf das Feld von meinem Popup-Dialog.
Irgendwelche Vorschläge, wie ich das XML des Artikels (könnte auch eine Seite sein) aus einem modalen Popup ändern könnte?
EDIT: Code verwendet 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
Nach Franks Beratung und etwas Hilfe von Jaime & Frank offline, habe ich es wie folgt zu arbeiten:
- Das Popup wird von einer Befehlserweiterung aufgerufen (Speichern & Schließen in meinem Fall)
- Die command.js gibt einen Event-Handler, der auf "Eintragen" aufgerufen wird (== OK gedrückt wurde)
$evt.addEventHandler(p.dialogPopup, "submit",
this.getDelegate(this._onPopupSubmit));
In meinem Popup ich das ausgewählte Element am vorbei (es ist eine Keyword-ID) an den Ereignishandler :
this.fireEvent("submit", { id: select.options[select.selectedIndex].value });
und _onPopupSubmit(e)
in der Event-Handler jetzt wieder nur e.data.id, laden Sie dieses Schlüsselwort, erhalten Eigenschaften wie ID & Titel, und aktualisieren Sie die Metadaten des Elements mit item.setMetadata ich gelesen ("new Metadaten mit aktualisierten Werten ").
Einfach :)
Können Sie den Code teilen, den Sie in Ihrem Popup haben? Vermutlich vermisst du irgendwo ein "Elternteil". –