按ID进行多次搜索。搜索不知道完整ID。 Sapui5

时间:2017-02-28 09:59:01

标签: javascript jquery search sapui5 getelementbyid

我想知道是否有任何选项可以按其ID搜索元素,但不知道完整ID,只是其中的一部分。所以我可以在不知道其完整ID的情况下找到一个元素,或者找到具有相似ID的多个元素。

例如,如果我知道我有3个具有以下ID的对象:

“objectID1”“objectID2”和“objectID3”。

我可以这样:

getElementByID("objectID*")

我在JavaScript中尝试使用:input[id*='PART_OF_ID_I_KNOW']

但它返回一个HTML对象,我需要它用于SAPUI5。

我可以使用类似的东西: var myControl = sap.ui.getCore().byId('myId');

但不必匹配完整ID(myID)?感谢。

3 个答案:

答案 0 :(得分:2)

虽然我不推荐这个,但它可能以你描述它的方式。你可以用jQuery查找具有类似ID的元素,获取元素的ID并将其传递给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.

答案 1 :(得分:0)

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

它将无法工作。这是因为当您尝试通过sap.ui.getCore()获取控制权时,sapui5会自动将额外字符串连接到您的id,例如sap.ui.getCore().byId('xml0--myId'),如果您在清单中提供了viewId,那么渲染控制它使用它。例如 sap.ui.getCore().byId('yourManifiestId--myId')

答案 2 :(得分:0)

你为什么需要这样做?是因为您想要在视图和片段中访问控件(带有前缀ID)吗?你给了一个ID" myControl"控制,但sap.ui.getCore().byId("myControl")没有工作,因为框架为它添加了一个前缀? 如果是,获取对控件的引用的唯一可靠方法是使用MVC视图和控制器中的框架提供的方法以及片段。

如果你有一个名为" myButton"在您的视图中,从控制器执行this.byId("myButton")this.getView().byId("myButton")以获取对您控件的引用。

如果你有一个名为&#34; myButton&#34;您通过sap.ui.xmlfragment(&#34;&#34;,&#34; myFragment.fragment.xml&#34;)嵌入视图中的片段,然后使用sap.ui.core.Fragment.byId("<prefix>", "myButton")访问它。

无论你做什么,都不要假设框架如何创建这些带前缀的ID。这些没有记录,可以改变。