从控制器onInit函数中检索OData模型对象

时间:2016-12-13 11:58:22

标签: javascript odata sapui5

我试图从SAPUI5中的控制器中从onInit函数内部检索OData模型,以将属性存储到局部变量中。我没有成功尝试以下内容:

var oModel = this.getView().getModel();   // returns undefined
var oModel = sap.ui.getCore().getModel(); // returns undefined

当onInit运行时,似乎尚未设置模型。因此,我尝试过:

var oModel = this.getOwnerComponent().getModel(); // returns empty odata object
var value = oModel.getProperty("/Collection/Property"); // returns undefined

完全相同的代码在除onInit之外的所有其他函数中都可以正常工作,但我需要在此函数中使用它。

如何在onInit中检索模型和属性?

1 个答案:

答案 0 :(得分:0)

这可以按预期工作。请检查有关应用程序初始化的documentation

我认为这与模型传播的工作方式有关。除非特定视图具有相同名称的模型,否则由组件实例化的模型将传播到其视图。通常,您在onInit中实例化视图特定模型,即运行时仅在执行onInit后才知道所有视图特定模型。

通常,您应该能够通过以下方式获取onInit中的组件模型:

this.getOwnerComponent().getModel()

更新:据我所知,getProperty不会自动触发读取。因此,您必须拥有自己的(documentation):

this.getOwnerComponent().getModel().read(path, paramaters);

使用参数传递成功处理程序,您可以在其中访问所需的值。