2017-02-28 1 views
2

Je me demandais s'il y avait une option pour rechercher un élément par son identifiant mais ne pas connaître l'identifiant complet, seulement une partie de celui-ci. J'ai donc pu trouver un élément sans connaître son identifiant complet ou trouver plusieurs éléments avec des ID similaires.Recherche multiple par ID. Rechercher ne pas connaître l'identité complète. Sapui5

Par exemple, si je savais que j'avais 3 objets avec l'ID: suivants

"objectID1" "objectID2" et "objectID3".

ce que je pourrais quelque chose comme:

getElementByID("objectID*")

Je l'ai essayé en utilisant JavaScript: input[id*='PART_OF_ID_I_KNOW']

Mais il retourne un objet HTML et je besoin pour SAPUI5.

pourrais-je utiliser quelque chose comme: var myControl = sap.ui.getCore().byId('myId');

Mais ne pas avoir à correspondre à l'ID complet (myID)? Merci.

+0

Aucune idée sur SAPUI5, mais vous avez tagué ce 'jquery' et utilisé un sélecteur jquery en javascript, essayez-le dans jquery:' $ ("input [id * = 'PART_OF_ID_I_KNOW']") ' –

Répondre

0
when you use `var myControl = sap.ui.getCore().byId('myId');` 

il ne sera pas work.It est parce que lorsque vous essayez d'obtenir le contrôle par sap.ui.getCore() sapui5 automatiquement concat chaîne supplémentaire à votre identifiant par exemple sap.ui.getCore().byId('xml0--myId') et si vous avez fourni viewId en tout manifeste alors le contrôle de rendu utilise cela. par exemple sap.ui.getCore().byId('yourManifiestId--myId')

2

Bien que je ne recommanderais pas cela, mais il est possible d'une manière que vous décrivez it.You pourrait rechercher des éléments avec ID similaires avec jQuery, obtenez et passez l'ID de l'élément à sap.ui.getCore() .byId();

var aElements = $("div[id*='PART_OF_ID_YOU_KNOW']"); 
//Lets say the first element returned is the one belonging to your control 
var oControl = sap.ui.getCore().byId(aElements[0].id); //If the element is a SAPUI5 control, you should get it. 
0

Pourquoi avez-vous besoin de faire cela? Est-ce parce que vous voulez accéder aux contrôles (avec des ID préfixés) à l'intérieur de vos vues et de vos fragments? Avez-vous donné un identifiant de "myControl" au contrôle, mais sap.ui.getCore().byId("myControl") ne fonctionne pas car le framework lui a ajouté un préfixe? Si oui, le seul moyen fiable d'obtenir une référence à votre contrôle est d'utiliser les méthodes fournies par le framework dans les vues et contrôleurs MVC et dans les fragments.

Si vous avez un contrôle appelé « myButton » dans votre vue, faites this.byId("myButton") ou this.getView().byId("myButton") du contrôleur pour obtenir une référence à votre contrôle.

Si vous avez un contrôle appelé « myButton » dans un fragment que vous avez intégré dans votre vue via sap.ui.xmlfragment (« », « myFragment.fragment.xml »), puis utilisez sap.ui.core.Fragment.byId("<prefix>", "myButton") pour y accéder. Quoi que vous fassiez, ne faites pas d'hypothèses sur la manière dont le framework crée ces ID préfixés. Ceux-ci ne sont pas documentés et peuvent changer.