我被我的小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"));
这就是我最终如何运作的原因。尽管获得整个记录(不仅是单个字段)本来还不错。
答案 0 :(得分:1)
类似的东西:
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)