2017-11-16 1 views
1

Wie erfolgt das in OpenUI 5/SAPUI5?
mit der folgendenSAPUI5: Binding-Attribute von XMLModels

<MainNavigation> 
    <Link> 
     <property name="Name">Clinical Overview</property> 
     <property name="command">showTeachingPoints</property> 
     <property name="autoSelect">true</property> 
    </Link> 
    <Link> 
     <property name="command">showDevices</property> 
     <property name="Name">Equipment</property> 
    </Link> 
</MainNavigation> 

Und versuchen, die text Eigenschaft für den folgenden auszufüllen:

<tnt:SideNavigation expanded="true" itemSelect="onItemSelect"> 
    <tnt:NavigationList id="sideMenu" items="{/MainNavigation/Link}"> 
    <tnt:NavigationListItem text="{property/[@name='Name']/text()}" /> 
    </tnt:NavigationList> 
</tnt:SideNavigation> 

Das Ziel sollte den Namen jedes Objekt angezeigt werden (so Klinische Übersicht, Ausrüstung, etc. ...) aber die Abfrage funktioniert nicht.

Auch habe ich versucht:

{property/[@name='Name']/text()} 
{property/[name='Name']/text()} 
{property/['@name='Name'']/text()} 
{property[@name='Name']/text()} 

Der einzige Weg, die gearbeitet hat, hat

gewesen

{property}

jedoch, dass nur angezeigt wird, was auch immer zuerst in der Sammlung von Eigenschaftsknoten ist. Ich möchte wissen, wie man an einen bestimmten Knoten gelangt, da ich die anderen Knoten für verschiedene Zwecke verwenden möchte (Standardauswahl, Funktionsrückrufe usw.)

zur Klärung bearbeitet:
Die Liste sollte enthalten:

Clinical Overview 
Equipment 

mit {property/@name} die Liste wäre:

Name 
command 

Zugegeben das ist nicht das, was ich suche, aber es teilt das gleiche Problem wie {property}, dass es gibt nur t er erste Artikel unter <Link> wenn ich die zweite oder dritte wollen.

Diese XPath-Abfrage funktioniert an anderen Orten /UI/MainNavigation/Link/property[@name='Name']/text() und ich möchte nur wie in OpenUI übersetzen.

Antwort

1

Dies sollte den Trick:

<tnt:SideNavigation expanded="true" itemSelect="onItemSelect"> 
    <tnt:NavigationList id="sideMenu" items="{/MainNavigation/Link}"> 
    <tnt:NavigationListItem text="{property/@name}" /> 
    </tnt:NavigationList> 
</tnt:SideNavigation> 

Weitere Informationen in der Dokumentation über Binding Path Syntax for XML Models.

Für Attribute existiert ein spezieller Selektor mit dem Zeichen "@" und "text()" kann verwendet werden, um auf den Inhalt eines Elements zu verweisen. Auf Listen wird verwiesen, indem der Pfad zum Mehrfachelement verwendet wird.

BR Chris

+0

ich durch diesen Link gelesen haben Sie vor dem vorgesehen ist, wo ich dachte, ich XPath-Abfragen tun konnte, und ich hatte schon versucht, '{Eigenschaft/@ name}' als eine meiner ersten Versuche aber es gibt den Wert des Namensattributs zurück (so würde ich 'Name' in allen meinen Feldern sehen), was ich nicht möchte. Zusätzlich habe ich {property/@ name/text()} 'gedacht, dass ich vielleicht den Trick gemacht habe, da es einer normalen xpath-Abfrage ähnlich wäre, aber es liefert leeren Text. Ich habe meine ursprüngliche Frage bearbeitet, um zu versuchen, besser zu erklären, wonach ich suche. – tamato

+0

In Ordnung. Mit normaler Bindesyntax ist das nicht möglich ... Sie müssen Ihre Daten vorher bearbeiten. Sollte mit jQuery einfach sein. – cschuff