Я пытаюсь получить контекст из развернутого объекта в подробном представлении, но когда я использую параметр расширения, он возвращает только список ключей. Я пробовал использовать oModel.read с указанными ключами в списке, но безуспешно.
Может ли кто-нибудь мне с этим помочь?
Вот мой код:
onInit : function () {
var oViewModel = new JSONModel({
busy : false,
delay : 0,
lineItemListTitle : this.getResourceBundle().getText("detailLineItemTableHeading")
});
this.getRouter().getRoute("object").attachPatternMatched(this._onObjectMatched, this);
this.setModel(oViewModel, "detailView");
this.getOwnerComponent().getModel().metadataLoaded().then(this._onMetadataLoaded.bind(this));
},
_onObjectMatched : function (oEvent) {
var sObjectId = oEvent.getParameter("arguments").objectId;
this.getModel("appView").setProperty("/layout", "TwoColumnsMidExpanded");
this.getModel().metadataLoaded().then( function() {
var sObjectPath = this.getModel().createKey("Categories", {
CategoryID : sObjectId
});
this._bindView("/" + sObjectPath);
}.bind(this));
},
_bindView : function (sObjectPath) {
// Set busy indicator during view binding
var oViewModel = this.getModel("detailView");
oViewModel.setProperty("/busy", false);
this.getView().bindElement({
path : sObjectPath,
parameters : {
expand: "Products"
},
events: {
change : this._onBindingChange.bind(this),
dataRequested : function () {
oViewModel.setProperty("/busy", true);
},
dataReceived: function () {
oViewModel.setProperty("/busy", false);
}
}
});
},
_onBindingChange : function () {
var oView = this.getView(),
oElementBinding = oView.getElementBinding();
// No data for the binding
if (!oElementBinding.getBoundContext()) {
this.getRouter().getTargets().display("detailObjectNotFound");
// if object could not be found, the selection in the master list
// does not make sense anymore.
this.getOwnerComponent().oListSelector.clearMasterListSelection();
return;
}
var sPath = oElementBinding.getPath(),
oResourceBundle = this.getResourceBundle(),
oObject = oView.getModel().getObject(sPath),
sObjectId = oObject.CategoryID,
sObjectName = oObject.CategoryName,
oViewModel = this.getModel("detailView"),
oBindingContext = this.getView().getBindingContext().getObject();
console.log("Object ", oObject);
this.getOwnerComponent().oListSelector.selectAListItem(sPath);
oViewModel.setProperty("/shareSendEmailSubject",
oResourceBundle.getText("shareSendEmailObjectSubject", [sObjectId]));
oViewModel.setProperty("/shareSendEmailMessage",
oResourceBundle.getText("shareSendEmailObjectMessage", [sObjectName, sObjectId, location.href]));
},
И вывод:
вывод
Ожидаемый результат:
ожидаемый результат