Я разрабатываю приложение SAPUI5, которое содержит пользовательские настройки и возможности пользователя перемещать экран вокруг. Предположим, что экран представляет собой макет динамического бокового содержимого sap.ui.layout.DynamicSideContent
с возможностью, чтобы пользователь разместил его слева или справа. У пользователя также есть возможность закрыть/открыть боковой контент на основе их использования.Вызов событий на элементах управления SAPUI5
Для облегчения этого есть кнопка (см. Снимок ниже), которая дает пользователю ощущение отрыва на экране. Кнопка имеет абсолютное положение, поэтому его ширина рассчитывается на основе окна браузера и размера и положения бокового содержимого. Чтобы вычислить первый раз, когда экран отображается, я использовал `window.load event.
Но это не ведет себя должным образом во всех сценариях. Как я могу вызвать событие renderComplete на макете (если на то пошло, на любом sap.ui.core.Control
). Я попытался использовать следующий код, но ни одно из событий не было вызвано.
controlName.addEventDelegate({
onBeforeShow: function() {
console.log("on Before Show");
},
onAfterShow: function() {
console.log("on After Show")
}
})
Я не могу использовать onAfterRendering
в целях, так как он вызывается до загрузки страницы со всеми зависимыми ресурсами и функция $.load()
не работает, как хорошо.
Что может быть лучшим подходом для такого сценария?
Заранее спасибо
Edit: Добавление моего кода.
onAfterRendering: function(){
var dynamicContainer= this.getView().byId("idKPIWORDynamicSideContent");
dynamicContainer.addDelegate({
onAfterRendering: function(){
alert("After Rendering");
}
});
}
Hi Shidai, я пробовал делать это внутри onAfterRendering of the View, но это, похоже, вообще не вызывает функцию. Пример в вопросе выше – Deepak
Поместите его в onAfterRendering вашего контроллера. «это» будет вашим контроллером, где вам нужно добавить новую функцию functionToExecute. «control» в этом случае что-то вроде this.getView(). byid ('controlId') – Shidai