Ширина ввода внутри SAPUI5 FlexBox - PullRequest
0 голосов
/ 05 апреля 2019

Попытка расширить ширину ввода внутри контейнера FlexBox.Я хотел бы, чтобы он был такой же ширины, как родительский контейнер.Это мой view.xml:

<mvc:View xmlns:l="sap.ui.layout" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m">
    <l:VerticalLayout id="idVL" class="sapUiContentPadding" width="100%">
        <l:content>
            <Panel id="idPnl">
                <FlexBox id="idFB">
                    <Input id="idInput">...</Input>
                </FlexBox>
            </Panel>
        </l:content>
    </l:VerticalLayout>
</mvc:View>

Проверка страницы в браузере показывает, что родительский FlexBox фактически расширяется до ширины, установленной в VerticalLayout.Однако SAPUI5 автоматически создает подраздел, который не распространяется на всю ширину, и помещает ввод в , что :

<div id="xxxxx---view--idFB" data-sap-ui="..." class="..."> //This is the parent FlexBox, it extends to the size of VerticalLayout element.
    <div id="__data4" style="order:0;flex-grow:0;flex-shrink:1;..." class="..."> //This sub-FlexBox is created automatically, and is smaller than it's parent.
        <div id="xxxxx---view--idInput ...> //The input is placed here.
            ...
        </div>
    </div>
</div>

Я могу ошибаться, но я подозреваю "flex-grow: 0 "является виновником, и я не могу найти способ получить доступ к этому свойству.Я попытался установить его в css внутри #idFB, который не работал.Также попытался установить его внутри некоторых из тех классов, используемых sub-div (как ".sapMFlexItem"), также не работал.Попытка установить ширину каждого контейнера на 100%, также не работает.В документации ничего не говорится о ручной настройке свойств flex.

Как установить значение flex-grow на 1 или каким-либо другим способом увеличить размер ввода до той же ширины, что и у VerticalLayout?

Примечание: я не на 100% продан при использовании FlexBox здесь;Я просто не знаю ни одного другого контейнера, который я мог бы использовать для размещения ввода и кнопки внутри и программной вставки большего количества страниц, например:

controller.js:

addInput: function () {
    var oInput = this.byId("idInput").clone();

    var delButton = new sap.m.Button({
        icon: "sap-icon://delete",
        press: this.deleteInput
    });

    var _oLayout = new sap.m.FlexBox({  // Some other better container?
        items: [oInput, delButton]
    });
    this.byId("idPnl").addContent(_oLayout);
}

1 Ответ

0 голосов
/ 05 апреля 2019

Разобрался.Необходимо поместить следующее внутри ввода:

<Input>
    ...
    <layoutData>
        <FlexItemData growFactor="1"/>
    </layoutData>
</Input>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...