SAPUI5 передает данные между вложенными представлениями - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь передать данные между различными представлениями, не используя маршрутизацию.

У меня есть main вид с некоторыми картами на нем. Структура карточек всегда одинакова, а содержание - нет, поэтому я хочу сделать многоразовое представление, которое будет загружать определенные данные в свой контроллер.

Мне нужен способ передать некоторые данные во вложенное представление, из которого я могу определить, какие данные загрузить для конкретного представления. Есть ли способ реализовать это? Спасибо за ваши ответы.

Вот как я хотел бы включить представление в главное представление, но мне нужно передать ему некоторые данные:

<mvc:XMLView viewName="Example.view.Card"/>

1 Ответ

0 голосов
/ 03 октября 2019

Насколько я понимаю, ваше требование:

  • Main просмотр есть список карт.
  • При нажатии на карту вам нужно перейти к вложенному представлению с выбранной картойинформация.

Этого можно добиться, подключив addEventDelegate к событию onAfterShow

Допустим, в представлении Main у вас есть кнопка.

new sap.m.Button({
  press: function() { //get the data using the binding context
    oController.navToDetail({
      "data1": "Red",
      "data2": "Green",
      "data3": "Yellow"
    });
  }
});

navToDetail: function(oParams) { //function to navigate to the nested view using sap.m.app
  var oApp = sap.ui.getCore().byId("app");
  if (oApp) {
    oApp.getController().to("pgDetail", oParams); //Navigate to detail page
  }
};

В вас Деталь страницы:

onInit: function() { //attach the event which will trigger after the page navigation
   this.getView().addEventDelegate({
     onAfterShow: function(oEvent) { //after page navigation
       this.onPageNavigate(oEvent);
     }
   }, this);
};

//Function to get the previous page data and update the view
onPageNavigate: function(oEvent) {
  console.log(oEvent.data);
};
...