【问题标题】:Multiple search by ID. Search not knowing full ID. Sapui5通过 ID 进行多次搜索。搜索不知道完整 ID。萨普伊5
【发布时间】:2017-02-28 09:59:00
【问题描述】:

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

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

“objectID1”“objectID2”和“objectID3”。

我可以这样:

getElementByID("objectID*")

我已经在 J​​avaScript 中尝试过使用:input[id*='PART_OF_ID_I_KNOW']

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

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

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

【问题讨论】:

  • 不知道 SAPUI5,但您已标记此 jquery 并在 javascript 中使用 jquery 选择器,在 jquery 中尝试:$("input[id*='PART_OF_ID_I_KNOW']")

标签: javascript jquery search sapui5 getelementbyid


【解决方案1】:

虽然我不建议这样做,但它可能以您描述的方式进行。您可以使用 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.

【讨论】:

    【解决方案2】:

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

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

    如果您在通过 sap.ui.xmlfragment("", "myFragment.fragment.xml") 嵌入视图的片段中有一个名为“myButton”的控件,则使用 @ 987654324@访问它。

    无论您做什么,都不要对框架如何创建这些前缀 ID 做出假设。这些没有记录,可以更改。

    【讨论】:

      【解决方案3】:
      when you use `var myControl = sap.ui.getCore().byId('myId');` 
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多