我试图为每个垂直布局div添加id。我可以用javascript做,但我想没有。
生成垂直布局的代码:
var oText1 = new sap.ui.commons.TextField({value:"Edward"});
var oText2 = new sap.ui.commons.TextField({value:"Maria"});
var oLayoutVer = new sap.ui.layout.VerticalLayout("LayoutVer", {
content: [oText1, oText2]
});
这一代:
<div id="LayoutVer" data-sap-ui="LayoutVer" class="sapUiVlt sapuiVlt">
<div class="sapUiVltCell sapuiVltCell"><input id="__field1" ... value="Edward"></div>
<div class="sapUiVltCell sapuiVltCell"><input id="__field2" ... value="Maria"></div>
</div>
我找到了它:http://scn.sap.com/thread/3386749,但我希望没有onAfterRendering,谢谢你
答案 0 :(得分:1)
我猜你试图设计这些元素或从JavaScript查询它。你可以像这样使用nth-child选择器,而不需要任何额外的id:
CSS
#LayoutVer:nth-child(2) {
width: 100%;
}
的jQuery
var secondChild = $(#LayoutVer:nth-child(2));
var allChildren = $(#LayoutVer).children();
一般来说,从CSS角度来看,很少需要使用id。由于您使用css选择器来查询元素并具有使用jQuery遍历DOM的各种其他可能性,因此您也很少需要ID。唯一真正的用途是通过sap.ui.getCore().byId()
获取UI5控件。您尝试访问的div不是UI5控件 - 它们只是垂直布局html输出中的元素。
重点是:我看不出有任何理由在这些div上使用id:)
BR 克里斯
答案 1 :(得分:0)
我认为您可以为要添加到垂直布局的每个元素提供sId,UI5会在内部为添加的每个元素创建一个div。您可以使用给定的sId控制这些元素将是一个更好的选择,而不是尝试为UI5创建的每个父div分配id。
$(&#34; #element sId&#34;)。parent()也有助于控制你问的div
答案 2 :(得分:0)
您需要的是在构造函数中传递ID并创建循环...
for ( var int = 1; int < 10; int++) {
var id = "layout" + int; // creates "layout1" .. "layout2"
var oText1 = new sap.ui.commons.TextField({value:"Edward"});
var oText2 = new sap.ui.commons.TextField({value:"Maria"});
var oLayoutVer = new sap.ui.layout.VerticalLayout(id, {
content: [oText1, oText2]
});
}
现在您可以通过ID访问; - )