我试图从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中检索模型和属性?
答案 0 :(得分:0)
这可以按预期工作。请检查有关应用程序初始化的documentation。
我认为这与模型传播的工作方式有关。除非特定视图具有相同名称的模型,否则由组件实例化的模型将传播到其视图。通常,您在onInit中实例化视图特定模型,即运行时仅在执行onInit后才知道所有视图特定模型。
通常,您应该能够通过以下方式获取onInit中的组件模型:
this.getOwnerComponent().getModel()
更新:据我所知,getProperty不会自动触发读取。因此,您必须拥有自己的(documentation):
this.getOwnerComponent().getModel().read(path, paramaters);
使用参数传递成功处理程序,您可以在其中访问所需的值。