我想知道是否有任何选项可以按其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)?感谢。
答案 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。这些没有记录,可以改变。