在控制器中获取模型

时间:2017-04-03 17:24:51

标签: binding model controller sapui5

在SAPUI5应用程序中,我在控制器中使用onBeforeRendering函数在视图显示之前更新视图。

在该功能中,我尝试使用以下方式获取路径:

var sPath = evt.getSource().getBindingContext().getPath();

但它告诉我evt.getSource()。getBindingContext()是未定义的。 但我需要它来获得模型。

通常我会得到这样的模型:

var data = this.getView().getModel().getData(sPath);

但现在我不能,因为我无法走上正轨。

使用:

var data = this.getView().getModel().getData();

它也不起作用(null)。

但是,在控制台中我可以使用以下方式获取模型:

var data = this.getView().getModel().oData;

但是,我知道这不是一件好事......

1 个答案:

答案 0 :(得分:0)

阅读完问题后,我们会想到以下几点。要获得更准确的答案,我们需要查看您的代码。

  1. 检查您是否尝试在 之后调用模型this.getView().getModel().getData();
  2. 例如,如果您在ajax调用的成功函数中设置模型,则当您到达尝试调用它的行时,调用可能无法完成。

    1. 检查模型是否没有名称。如果是,请通过this.getView().getModel("model's-name-here").getData();

    2. 进行调用
    3. 排队

      var sPath = evt.getSource().getBindingContext().getPath();

    4. 您尝试从事件中获取模型(evt)。检查onBeforeRendering函数中是否包含该事件。

      1. 检查您是否已将调用的模型附加到视图(this.getView().setModel(oModel))而不是核心(sap.ui.getCore().setModel(oModel))。