我有一个带有此视图的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及其IDthis.getView().byId("helloWorld").sId
但我无法使用byId()方法获取Div的ID。
this.getView().byId("viewDiv")
返回undefined。
我怎样才能获得div的id?我需要div的id,所以我可以添加一些额外的第三方控件。
答案 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和前缀。