添加id VerticalLayout SapUi5

时间:2014-10-15 07:08:57

标签: sapui5

我试图为每个垂直布局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,谢谢你

3 个答案:

答案 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访问; - )