2012-04-03 8 views
1

Ich versuche, einen Orbeon Forms XBL-Wrapper um ein JavaScript Media Player-Steuerelement für die Aufnahme in eine XForms-Anwendung zu erstellen.So erstellen Sie eine dynamische URL in JavaScript basierend auf einem Orbeon Xforms Steuerwert

Die URL der Mediendatei muss dynamisch basierend auf einem Wert eines anderen Steuerelements (z. B. xforms: input) erstellt werden, das auch derselben Dateninstanz zugeordnet ist. Daher wird die Komponentenschnittstelle von der Form:

<comp:player ref="instance('data')/name"/> 

und an anderer Stelle auf der Seite wird es eine weitere Steuerung sein, den gleichen Wert Referenzierung z.B.

<xforms:input ref="instance('data')/name"/> 

, wo der Wert der referenzierten Instanz Daten den Namen einer Datei enthält, die dann zu einer Basis-URL innerhalb der XBL-Komponente angehängt wird, um die endgültige URL der Mediendatei zu machen.

Das Problem, das ich habe, ist zu wissen, wie auf diesen Wert von Javascript innerhalb der XBL-Komponente zugreifen. Ich kann ein Skript einbinden, das aufgerufen wird, wenn sich der referenzierte Dateninstanzwert ändert, aber ich kann einfach nicht sehen, wie Sie dann auf den Wert von JavaScript zugreifen können, damit ich die URL erstellen und an das Mediensteuerelement übergeben kann.

<xxforms:script ev:event="xforms-value-changed" type="text/javascript"> 

    /* How do you access the components referenced value? */ 
    var controlValue = ORBEON.xforms.Document.getValue(??????????); 

    /* construct the url of the media file from this value. */ 
    media.player.load('baseurl/' + controlValue); 

</xxforms:script> 

Kann jemand einen geeigneten Weg vorschlagen, um diese Art von Problem in einer Xforms XBL-Komponente zu lösen?

Antwort

0

Verwenden Sie die AJAXSLT Bibliothek und erstellen Sie eine XPath-Abfrage den Attributwert zu erhalten:

xpathParse("//xforms:input/@ref");