[英]SAPUI5: Detail View Controller - Access Data
我被我的小 UI5 应用程序困住了。 这是一个主/详细应用程序,具有相应的 2 个视图。 我想访问详细信息控制器内的选定数据集。 视图和应用程序本身可以工作。 我可以在详细视图中显示数据。
但我需要控制器中的数据。 我花了几个小时阅读,我相信它一定很简单。
在handleRouteMatched
的细节控制器中,我定义了一个新变量var dataObject = this.getView().bindObject(oPath);
当我调试dataObject
我看到数据在那里(但所有数据不仅仅是选定的数据)。 它在“未定义”的深处
编辑:
var sContext = this.getView().oController.sContext; //Retrieve context
var oModel = this.getOwnerComponent().getModel(); // Aquire the model
console.log(oModel.getProperty("/" + sContext + "/Businesstravel"));
这就是我最终让它工作的方式。 虽然获得整个记录会很好(不仅仅是单个字段)。
像这样:
var oView = this.getView().byId('DetailPage1');
var sPath = oView.getBindingContext('myModelName').getPath();
var myData = this.getView().getModel('myModelName').getProperty(sPath);
好吧,我没有遵循您的所有代码,但测试了两件对您有帮助的事情。
首先,要获取路线中的参数,我在您的 detailPage1 控制器中使用
onInit: function(){
this.oRouter = sap.ui.core.UIComponent.getRouterFor(this);
this.oRouter.getRoute("DetailPage1").attachPatternMatched(this._onObjectMatched, this);
...
},
_onObjectMatched: function(oEvent) {
var contextFromRouterParameter = oEvent.getParameter("arguments").context;
console.log('contextFromRouterParameter: ' + contextFromRouterParameter);
},
其次,要获取您的模型(您在清单中定义它,因此它是在组件级别设置的),您需要执行以下操作:
var oModel = this.getOwnerComponent().getModel();
无论您想在哪里检索它。 然后你可以使用它的功能,比如: getProperty(sPath)
正如我之前提到的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.