SAPUI5: Keydown на виде / странице - PullRequest
0 голосов
/ 08 января 2020

в моем приложении sapui5 у меня есть следующий код в моем домашнем контроллере

onAfterRendering: function() {
var s = this;

document.addEventListener("keypress", function onPress(event) {
     if ( event.keyCode === 50) {
        alert("Test");
  }
});

Так что, когда я нажимаю клавишу, сообщение будет отображаться в домашнем представлении и в других представлениях из-за элемента 'document'

Но я хочу, чтобы в каждом представлении / контроллере была другая функция или сообщение с тем же кодом.

Так как я могу прикрепить к указанному c представлению? Я не хочу прикреплять его к элементу управления.

1 Ответ

0 голосов
/ 09 января 2020

Вы должны удалять и добавлять EventListener каждый раз, когда вы посещаете представление.

View1:

onInit: function(){
    this.getRouter().getRoute("myView1").attachMatched(this._onRouteMatched, this); //Call _onRouteMatched on every visit from myView1
},

_onRouteMatched: function (oEvent) {
    document.removeEventListener("keypress"); //Remove the event listener
    document.addEventListener("keypress", function onPress(event) { //Add the event listener again with another message
        if ( event.keyCode === 50) {
            alert("Test View 1");
    }
}

View2:

onInit: function(){
    this.getRouter().getRoute("myView2").attachMatched(this._onRouteMatched, this); 
},

_onRouteMatched: function (oEvent) {
    document.removeEventListener("keypress");
    document.addEventListener("keypress", function onPress(event) {
        if ( event.keyCode === 50) {
            alert("Test View 2");
    }
}
...