繁体   English   中英

SAPUI5:详细视图控制器 - 访问数据

[英]SAPUI5: Detail View Controller - Access Data

我被我的小 UI5 应用程序困住了。 这是一个主/详细应用程序,具有相应的 2 个视图。 我想访问详细信息控制器内的选定数据集。 视图和应用程序本身可以工作。 我可以在详细视图中显示数据。

但我需要控制器中的数据。 我花了几个小时阅读,我相信它一定很简单。

handleRouteMatched的细节控制器中,我定义了一个新变量var dataObject = this.getView().bindObject(oPath);

当我调试dataObject我看到数据在那里(但所有数据不仅仅是选定的数据)。 它在“未定义”的深处Chrome 调试器图片

Chrome 调试器 2 我不知道如何掌握这个。 有人可以帮忙吗?

编辑:

var sContext = this.getView().oController.sContext; //Retrieve context
var oModel = this.getOwnerComponent().getModel(); // Aquire the model
console.log(oModel.getProperty("/" + sContext + "/Businesstravel"));

这就是我最终让它工作的方式。 虽然获得整个记录会很好(不仅仅是单个字段)。

  1. 获取绑定上下文的对象。
  2. 获取此上下文,并从中获取路径。
  3. 使用路径从您的模型中获取相应的数据

像这样:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM