Problemas de navegación en un shell unificado sapui5(sap.ui.unified.Shell)
navigation (2)
La navegación a través de sap.ui.core.EventBus está obsoleta. Eche un vistazo a SAPUI5 Navigation and Routing http://help.sap.com/saphelp_hanaplatform/helpdata/es/68/8f36bd758e4ce2b4e682eef4dc794e/content.htm
Se introdujo un nuevo mecanismo de Enrutamiento en UI5 en la versión 1.16. Para la navegación dentro de la aplicación, esto reemplaza las técnicas anteriores, como usar sap.ui.core.EventBus o compartir el código de controlador específico del contenedor de navegación entre las páginas agregadas.
Utilicé el control unificado de Shell para implementar el menú de deslizamiento similar al de Facebook e integé una lista para poder ingresar los elementos del menú. La idea es que cuando un usuario hace clic en un elemento de la lista en el menú, se le redirige a una nueva vista. Intenté implementarlo usando bus.publish ("nav", "to" {id: ..}) pero no funciona. (He puesto el menú en el panel de la cortina de la cáscara unificada) ¿Alguien puede ayudarme? Puede encontrar a continuación los respectivos fragmentos de código de la vista y el controlador.
var oListTemplate = new sap.m.StandardListItem({
title: "{title}",
icon: "{icon}",
description: "{description}",
type: sap.m.ListType.Navigation,
customData: new sap.ui.core.CustomData({
key: "targetPage",
value: "{targetPage}"
})
});
var oList = new sap.m.List({
selectionChange: [oController.doNavOnSelect, oController],
mode: sap.m.ListMode.SingleSelectMaster
});
oList.bindAggregation("items", "/Menu", oListTemplate);
El controlador:
onInit: function() {
this.getView().setModel(new sap.ui.model.json.JSONModel("model/menu.json"));
this.bus = sap.ui.getCore().getEventBus();
},
doNavOnSelect: function(event){
if (sap.ui.Device.system.phone) {
event.getParameter("listItem").setSelected(false);
}
this.bus.publish("nav", "to", {
id: event.getParameter(''listItem'').getCustomData()[0].getValue()
});
Solución: reemplace bus.publish con app.to
doNavOnSelect: function(event){
if (sap.ui.Device.system.phone) {
event.getParameter("listItem").setSelected(false);
}
app.to(event.getParameter(''listItem'').getCustomData()[0].getValue());
}