Как я могу уничтожить фрагмент (или представление)?

Я создал этот фрагмент:

var dialogFrafment = sap.ui.xmlfragment(
    "appIntra.fragment.dialog",
    this.getView().getController() // associate controller with the fragment            
);
this.getView().addDependent(dialogFrafment);
sap.ui.getCore().byId("idMailReport").setValue(sap.ui.getCore().getModel("mailUser"));

dialogFrafment.
dialogFrafment.open();

Как я могу удалить его после завершения?


person padibro    schedule 27.06.2014    source источник
comment
что-то вроде dialogFrafment.delete()   -  person padibro    schedule 27.06.2014
comment
Есть ли причина, по которой вы хотите его удалить?   -  person Tim Gerlach    schedule 27.06.2014
comment
Поскольку фрагменты возвращают только элемент управления, который возвращается в createContent вашего фрагмента, вы можете уничтожить его, как и любой другой элемент управления UI5, используя .destroy()   -  person Tim Gerlach    schedule 27.06.2014
comment
Если фрагмент связан с действием, вы можете просто вызвать метод finish() своего действия, чтобы не изменять поток жизненный цикл действия.   -  person arielnmz    schedule 01.07.2014


Ответы (1)


Сохраните свой dialogFrafment в своем контроллере.

if(!this.dialogFrafment) {
    this.dialogFrafment = sap.ui.xmlfragment(
        "appIntra.fragment.dialog",
        this.getView().getController() // associate controller with the fragment            
    );
    this.getView().addDependent(dialogFrafment);
    sap.ui.getCore().byId("idMailReport").setValue(sap.ui.getCore().getModel("mailUser"));
}  
this.dialogFrafment.open();

Уничтожьте фрагмент в функции onExit вашего контроллера.

onExit: function() {
    if (this.dialogFrafment) {
        this.dialogFrafment.destroy(true);
    }

},
person Haojie    schedule 01.07.2014
comment
и как я могу это сделать, если я создаю экземпляр xml в onInit? Как я могу получить его? Сохранение dialogFrafment в моем контроллере не работает this.. - person padibro; 29.07.2014