Я пытаюсь заполнить страницу сведений данными первого элемента списка на главной странице, но я получаю пустую страницу сведений. Я работаю над oData V4 и выполняю вызов ajax для привязки данных на главной странице. Данные поступают на главную страницу, но не на страницу с подробностями. Я упомянул в коде, какая функция в нем не работает. Мой код для контроллера:
Controller.js:
sap.ui.define([
"sap/ui/core/mvc/Controller"
],
function (Controller) {
"use strict";
return Controller.extend("hmel.TravelandGuestHouse.controller.CreateRequestMaster", {
onInit: function () {
this.router = sap.ui.core.UIComponent.getRouterFor(this);
//model to populate master page
this.addmodel = new sap.ui.model.json.JSONModel();
this.getView().setModel(this.addmodel, "Model");
this.listTemp = this.getView().byId("objTravelId").clone();
this.getView().byId("travelListId").bindAggregation("items", {
path: "Model>/value",
template: this.listTemp
});
this.router.attachRoutePatternMatched(this._handleRouteMatched, this);
},
_handleRouteMatched: function (evt) {
if (evt.getParameter("name") !== "CreateRequestMaster") {
return;
}
var that = this;
$.ajax({
url: "/Non_sap_create_requests/odata/TravelPrpGetHistory",
method: "GET",
headers: {
"User": "70000419"
},
dataType: "json",
success: function (data) {
that.addmodel.setData(data);
}
error: function (err) {
}
});
that.getView().byId("objStatus");
//this code is not working. Debugger is not entering in this function
this.getView().byId("travelListId").getBinding("items").attachDataReceived(function () {
var list = that.getView().byId("travelListId");
list.removeSelections();
var selectedItem = list.getItems()[0];
// console.log(selectedItem);
if (selectedItem) {
if (!sap.ui.Device.system.phone) {
list.setSelectedItem(selectedItem, true);
var data = selectedItem.getBindingContext().getObject();
sap.ui.getCore().getModel("detailModel").setData(data);
that.router.navTo("CreateRequestDetail", {
ID: data.ID
});
}
} else {
that.router.navTo("NoData");
var RedirectLocation = window.location.origin;
location.replace(RedirectLocation);
}
});
}
}