sapui5 - SAP UI5: Navigation from Master page and Detail page through two different OData URLs -
sapui5 - SAP UI5: Navigation from Master page and Detail page through two different OData URLs -
i trying create master - detail page using odata servicea in sapui5. works fine in master page. meaning i'm able populate list valid info sap backend using odata url.
now want accomplish is, phone call sec odata url fetch detail values , populate in page.
my master.controller.js
handlelistselect : function (evt) { var context = evt.getparameter("listitem").getbindingcontext(); this.nav.to("detail", context); console.log('evt.getsource: ' + evt.getsource()); console.log('evt.getbindingcontext: ' + evt.getsource().getbindingcontext()); }
console output gives
"evt.getsource: element sap.m.list#master--list" sap-ui-core.js line 80 > eval:31 "evt.getbindingcontext: undefined"
i'm unable populate values in detail page sec url. can guide or help me on this?
my compenent.js
createcontent : function() { // create root view var oview = sap.ui.view({ id : "app", viewname : "sap.ui.demo.myfiori.view.app", type : "js", viewdata : { component : } }); // using odata model connect against real service var url = "/myfioriui5/proxy/sap/opu/odata/sap/xxxxxx;mo/"; var omodel = new sap.ui.model.odata.odatamodel(url, true, "", ""); oview.setmodel(omodel); // set i18n model var i18nmodel = new sap.ui.model.resource.resourcemodel({ bundleurl : "i18n/messagebundle.properties" }); oview.setmodel(i18nmodel, "i18n"); // set device model var devicemodel = new sap.ui.model.json.jsonmodel({ isphone : jquery.device.is.phone, isnophone : !jquery.device.is.phone, listmode : (jquery.device.is.phone) ? "none" : "singleselectmaster", listitemtype : (jquery.device.is.phone) ? "active" : "inactive" }); devicemodel.setdefaultbindingmode("oneway"); oview.setmodel(devicemodel, "device"); // using local model offline development // var omodel = new sap.ui.model.json.jsonmodel("model/mock.json"); // oview.setmodel(omodel); // done homecoming oview; }
my detail.controller.js
sap.ui.controller("sap.ui.demo.myfiori.view.detail", { handlenavbuttonpress : function(evt) { this.nav.back("master"); }, onbeforerendering : function() { // this.byid("supplierform").bindelement("businesspartner"); }, handleapprove : function(evt) { // show confirmation dialog var bundle = this.getview().getmodel("i18n").getresourcebundle(); sap.m.messagebox.confirm(bundle.gettext("approvedialogmsg"), function(oaction) { if (sap.m.messagebox.action.ok === oaction) { // notify user var successmsg = bundle.gettext("approvedialogsuccessmsg"); sap.m.messagetoast.show(successmsg); // todo phone call proper service method , update model (not part of session) } }, bundle.gettext("approvedialogtitle")); } });
i can't see sec url refering to, handle way.
in component.js:
var oview = sap.ui.view({ id: "app", viewname: "fom.test.app.view.app", type: "js", viewdata: { component : } }); var datamodel = new sap.ui.model.odata.odatamodel("/fom/fiori/odata/fom/mobile_app_srv", true); oview.setmodel(datamodel);
this connects master view info list items.
in app.controller.js create utilize of onnavigation function, defined in detail.controller.js. means when routing detail view, onnavigation function called before view set up.
app.controller.js:
to : function (pageid, context) { var app = this.getview().app; // load page on demand var master = ("master" === pageid); if (app.getpage(pageid, master) === null) { var page = sap.ui.view({ id : pageid, viewname : "fom.test.app.view.view." + pageid, type : "xml" }); page.getcontroller().nav = this; app.addpage(page, master); jquery.sap.log.info("app controller > loaded page: " + pageid); } // show page app.to(pageid); // set info context on page if (context) { var page = app.getpage(pageid); page.setbindingcontext(context); try{ var ocontroller = page.getcontroller(); ocontroller.onnavigation(context); } catch(e){ } } },
detail.controller.js:
onnavigation: function(context) { this.getview().bindelement({ path: context.spath, parameters: { select: "id," + "lifnam," + "rmwwr," + "waers," + "sendedatum," + "workflowtyp," + "sktodat," + "stufe," + "monfrgsta," + "bukrs," + "belnr," + "gjahr," + "edcobject," + "bstattxt", expand: "positions" } }); },
the bindelements() function, connects detail view results of web service call, fetches attributes mentioned in select , line items fetched expand.
now first webservice phone call loading info relevant master view list, , sec 1 info of selected list item.
when utilize newer routing functionality of ui5, need find place hook. haven't built in yet.
sapui5 sap-fiori
Comments
Post a Comment