Zugriff auf setProperty klappt nicht

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
ideenzeit
Beiträge: 11
Registriert: 09.10.2012, 20:37

Zugriff auf setProperty klappt nicht

Beitrag von ideenzeit » 14.06.2015, 15:31

Hallo zusammen,

ich versuche zur Laufzeit mittels Javascript zu überprüfen, ob ein Field und ein Draw die setProperty Eigenschaft haben.

Laut XFA Spec ist diese Eigenschaft für beide möglich. Zum Test habe ich mal jeweils eine Datenbindung angelegt, um zu zeigen, dass mittels der setPropery Eigenschaft sowohl ins Field als auch ins Draw Werte geladen werden können.

Allerdings scheitere anschließend beim Zugriff auf die Eigenschaft beim Draw. Hat jemand eine Idee, wie das möglich sein könnte? Meine Methode ist offensichtlich die Falsche für Draws.

Ich benötige dies, um zur Laufzeit für alle Fields und Draws bestimmte Aktionen zu starten, die abhängig davon sind, ob die setProperty Eingeschaft vorhanden ist oder nicht.

Vielen lieben Dank im Vorraus!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

Zugriff auf setProperty klappt nicht

Beitrag von radzmar » 15.06.2015, 21:53

Die setProperty-Eigenschaft wird nur im Template-DOM verarbeitet, also nichts zwangsläufig im Form-DOM abgebildet, anhand dessen das Formular letzlich gerendert wird.
Um das Vorhandensein zu überprüfen, musst Du daher auf das Objekt im Template verweisen.

Code: Alles auswählen

var vTarget = xfa.template.resolveNode("Formular1.page.Text1"),
	vResult = false;

for (var i = 0; i < vTarget.nodes.length; i += 1) {
	if (vTarget.nodes.item(i).className === "setProperty") {
		vResult = true;
	}
}

xfa.host.messageBox(vTarget.somExpression.concat("\nhat ").concat(vResult === true ? "die" : "keine" ).concat(" 'setProperty-Eigenschaft' gesetzt."));

ideenzeit
Beiträge: 11
Registriert: 09.10.2012, 20:37

Zugriff auf setProperty klappt nicht

Beitrag von ideenzeit » 16.06.2015, 20:28

Klasse! An das template DOM habe ich überhaupt nicht gedacht.

Besten Dank für die schnelle Hilfe samt Beispiel!!! :)

Antworten