SAP Fiori: кнопка "Назад" во фрагментах

Я работаю над приложением SAP Fiori, и я застрял в этой проблеме около 2 недель безрезультатно. У меня есть "создать" фрагмент, который прикреплен к "Детальному" виду.

Когда я открываю фрагмент «создать» и хочу вернуться к основному подробному представлению, кнопка «Назад» не работает, поэтому мне нужно обновить приложение.

Я предполагаю, что кнопка возврата не работает одинаково между видами и между фрагментами.

Вот моя функция кнопки возврата:

cancel: function() {

        var oHistory = sap.ui.core.routing.History.getInstance(),
            sPreviousHash = oHistory.getPreviousHash();

        if (sPreviousHash !== undefined) {
            // The history contains a previous entry
            history.go(-1);
        }

    },

Здесь, когда я показываю sPreviousHash, он не определен. Почему?


person Anas Najem    schedule 09.05.2017    source источник


Ответы (2)


Где находится кнопка "Назад", о которой вы говорите?

Я ожидал, что фрагмент - это диалог и, следовательно, нет кнопки возврата. Нужна кнопка закрытия, которая приведет к закрытию фрагмента. В зависимости от требований, обратная навигация может быть выполнена с контроллера, на котором был создан фрагмент.

Фрагменты - это метод повторного использования частей пользовательского интерфейса, но они не являются частью концепции MVC. Вы не можете переходить непосредственно к / из фрагментации, и это должно быть сделано с помощью представлений. Следовательно, история недоступна во фрагменте. Кнопка возврата БРАУЗЕРА вернет вас к предыдущему экрану в истории БРАУЗЕРА.

person Community    schedule 09.05.2017
comment
Спасибо, дружище, за кристально ясное объяснение, не могли бы вы дать мне образец кода для закрытия фрагмента? - person Anas Najem; 09.05.2017

Контроллер представления, в котором фрагмент открывается как диалог.

    _initializeReviewDialog: function() {   this._oReviewDialog = sap.ui.xmlfragment(this.getView().getId(), "ReviewDialog", this);

    this.attachControl(this._oReviewDialog);

    },

Событие в представлении, запускающее открытие диалогового окна

onEditReviewPressed: function(oEvent) {


    if (!this._oReviewDialog) {

        this._initializeReviewDialog();     }


        }

    this._oReviewDialog.open();

    },



    onReviewDialogOKPressed: function(oEvent) {

        this._oReviewDialog.close();

    },

Добавить фрагмент как зависимый, чтобы были известны модели и события из собственного представления / контроллера.

attachControl: function(oControl) {

    var sCompactCozyClass = this.getOwnerComponent().getContentDensityClass();

    jQuery.sap.syncStyleClass(sCompactCozyClass, this.getView(), oControl);

    this.getView().addDependent(oControl);

    },

Фрагмент Определение

    <core:FragmentDefinition id="ReviewDialogFragment" xmlns="sap.m" xmlns:l="sap.ui.layout"

        xmlns:core="sap.ui.core">

    <Dialog id="reviewDialog" >

        <content>

            ...         </content>

        <beginButton>

            <Button id="btnOK" text="{i18n>xbut.ok}" press="onReviewDialogOKPressed"/>

        </beginButton>  </Dialog>


</core:FragmentDefinition>
person Community    schedule 10.05.2017