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

时间:2018-03-07 08:30:33

标签: javascript sapui5

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

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

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

当我调试dataObject时,我发现数据存在(但所有数据不仅仅是所选数据)。它深入"未定义" Chrome Debugger Picture

Chrome Debugger 2 我不知道如何掌握这一点。有人可以帮忙吗?

修改

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

这就是我最终如何运作的原因。尽管获得整个记录(不仅是单个字段)本来还不错。

1 个答案:

答案 0 :(得分:1)

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

    类似的东西:

    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)