Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SAPUI5:局部视图控制器-访问数据_Javascript_Sapui5 - Fatal编程技术网

Javascript SAPUI5:局部视图控制器-访问数据

Javascript SAPUI5:局部视图控制器-访问数据,javascript,sapui5,Javascript,Sapui5,我被我的小UI5应用程序卡住了。这是一个主/细节应用程序,有两个视图。我想访问细节控制器内的选定数据集。视图和应用程序本身都可以工作。我可以在详图视图中显示数据 但我需要控制器中的数据。我花了几个小时阅读,我相信它一定很简单 在HandlerRouteMatched中的detail控制器中,我定义了一个新变量var dataObject=this.getView.bindObjectoPath 调试dataObject时,我看到数据在那里,但所有数据都在那里,而不仅仅是选定的数据。它深藏在未定义

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

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

在HandlerRouteMatched中的detail控制器中,我定义了一个新变量var dataObject=this.getView.bindObjectoPath

调试dataObject时,我看到数据在那里,但所有数据都在那里,而不仅仅是选定的数据。它深藏在未定义的世界里

我也不知道怎么弄到这个。有人能帮忙吗

编辑:

这就是我最终让它工作的原因。如果能得到完整的记录,而不仅仅是单个字段,那就太好了

获取绑定上下文的对象。 获取此上下文,并从中获取路径。 使用路径从模型中获取相应的数据 大概是这样的:

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();

无论你在哪里找到它。然后,您可以使用它的函数,如:getPropertysPath,正如我前面提到的那样

我认为整个模型中一定有问题。我找不到答案,因为它没有定义。在Chrome中调试时,我可以看到以下日志:2018-03-08 14:24:13.721399确实将id为“application build prototype component--DetailPage1”的视图“com.sap.build.sap.hrAttrition.view.DetailPage1”放入id为“application build prototype component--app idAppControl”的控件的聚合“detailPages”中EventProvider sap.m.routing.Target,因此我也尝试使用全名,但没有成功。这似乎也是我通常面临的问题。我试图跳过步骤1,只输入了var sPath=this.oView.getBindingContextdataSource.getPath;正如我在调试器中看到的,oView就是其中的一部分。但还是没有定义。从昨天起这就是我的问题。不知何故,我无法获取控制器中的任何数据。原则上一定是出了问题哦,谢谢你一直帮助我:-同样,这两个视图可以工作,但我无法访问Detail controller中的任何数据。只能作为detail view.xml上的元素添加代码吗?至少,详细视图的XML视图、详细视图的控制器、主控制器中处理项目选择的函数以及manifest.json文件中的路由定义Good day Rafael,我已经将项目从WebUI导出到了。确实谢谢你,这一定是我的一个基本错误。是的,var oView=this.getView.byId'DetailPage1';在代码中不起作用,因为在名为“DetailPage1”的视图中没有控件。我只是一开始就误解了你的截图。DetailPage1是视图的名称。您将在cotroller中获得您的视图。
var oModel = this.getOwnerComponent().getModel();