UI5:如何访问视图中定义的html元素
UI5: How to access html element defined inside view?
我有一个具有以下视图的UIComponent:
<mvc:View controllerName="my.components.webmap.controller.Map"
xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m"
xmlns:html="http://www.w3.org/1999/xhtml">
<html:div id='myDiv' style='height:inherit'></html:div>
<Button id="helloWorld" text="Say Hello" press=".onShowHello" />
</mvc:View>
在View控制器中,我可以从
this.getView().byId("helloWorld").sId
但是我无法使用byId()
方法获得div的ID。
this.getView().byId("myDiv"); // returns undefined
如何获取div的ID以便访问元素?我需要div的ID,这样我就可以给它添加一些额外的第三方控件。
您可以使用createId
将您的本地ID转换为全局ID,并将其与getElementById
:一起使用
// After rendering
var divId = this.createId("myDiv"); // this == controller instance
document.getElementById(divId).whatEver
有一些可能的解决方案。让我们从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特定的控制处理。
要回答如何获取HTML元素(div)的ID的问题,您还可以在控制器中组装ID,如下所示:
var sHTMLElementID = this.getView().sId.concat("--".concat("viewDiv"));
因此UI5仍然处理视图的id和前缀。
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 如何在ExtJs4应用程序上为视图、存储和模型设置自定义文件夹名称
- UI5:如何访问视图中定义的html元素
- $routeParams在传递到新视图时未定义&控制器
- 遍历SC.ManyArrray以创建要附加到SproutCore中的另一个视图的自定义视图
- 使用AMD时未定义淘汰组件视图模型
- 基于月份视图的完整日历自定义视图
- 自定义筛选器不'我不使用django数据表视图创建的ajax.data.Json
- Uncaught ReferenceError:尝试在Android网络视图中访问时未定义函数
- Meteor JS自动表单自定义输入-没有当前视图
- 未定义的主干视图不是函数冲突
- 更改ng包含或定义默认ui视图
- 主干无法读取属性'属性'主干视图中的未定义错误
- Cordova嵌入式网络视图未响应navigator.camera未定义
- 如何在rails视图中定义gon变量(瘦文件)
- Kendo UI自定义验证不适用于模板和视图模型
- 正在将逻辑从视图移动到自定义绑定
- 如何在 angularJS 中为一个视图定义多个控制器
- 将模型添加到木偶项视图定义之外的主干集合
- 主干子视图定义-主视图与路由器