OpenUI5:如何在视图

时间:2016-05-11 16:40:45

标签: javascript html sapui5

我有一个带有此视图的UIComponent:

<mvc:View
   controllerName="my.components.webmap.controller.Map"
   xmlns="sap.m"
   xmlns:mvc="sap.ui.core.mvc"
   xmlns:html="http://www.w3.org/1999/xhtml">
   <html:div id='viewDiv' style='height:inherit'></html:div>
   <Button id="helloWorld" text="Say Hello" press="onShowHello"/>
</mvc:View>

在View控制器中,我可以从

获取Button及其ID
this.getView().byId("helloWorld").sId

但我无法使用byId()方法获取Div的ID。

this.getView().byId("viewDiv")返回undefined。

我怎样才能获得div的id?我需要div的id,所以我可以添加一些额外的第三方控件。

3 个答案:

答案 0 :(得分:1)

有一些可能的解决方案。让我们从UI5的角度看待首选的一个。你的观点:

<mvc:View controllerName="yourcontroller" xmlns="sap.m" xmlns:layout="sap.ui.layout" xmlns:mvc="sap.ui.core.mvc" xmlns:html="http://www.w3.org/1999/xhtml"> <Button press="btn" /> <layout:VerticalLayout id="layout"> </layout:VerticalLayout> </mvc:View>

您可以使用任何符合您要求的布局,当然您也可以设置布局属性。在您的控制器中,按钮的事件处理程序:

btn: function(oEvent) { var oLayout = this.getView().byId("layout"); oLayout.addContent(new sap.m.Text({text: "test"})); }

-o -

如果你的api只支持div容器,你应该使用一些jQuery技巧:

var oDiv = $('[id*="myDiv"]');

但是,使用此解决方案,您将失去UI5特定的控制处理。

答案 1 :(得分:1)

您可以使用View.createId()将您的lokal id转换为全局ID并将其与jQuery一起使用:

var viewDivId = this.getView().createId("viewDiv");
jQuery("#"+viewDivId).whatEver

答案 2 :(得分:0)

要回答您的问题如何获取HTML元素(div)的ID - 您还可以在控制器中汇编ID,如下所示:

var sHTMLElementID = this.getView().sId.concat("--".concat("viewDiv"));

因此UI5仍处理视图的id和前缀。