任何人都可以告诉如何访问Controller Init()
内的oData Model(Manifest.json)吗?
我尝试通过Component.js访问。尝试在Component.js中的代码下面
var oModel = this.getModel("destinModel");
this.setModel(destinModel,"Model");
控制器Init()
中的功能 -
var oComponent = this.getOwnerComponent();
var oModel = oComponent.getModel("Model");
当我在Init Function中使用它时,这不起作用,但它在onAfterRendering()
内工作。
我需要访问控制器的Init()内部的模型..如果我不能请建议我访问模型的任何其他方法..
答案 0 :(得分:1)
我还注意到,只有在视图的init函数执行完毕后才会将模型传递给视图。但是,当执行视图的init函数时,模型已经存在于组件中。因此,您可以使用this.getComponent().getModel()
代替this.getModel()来访问它。 E.g:
onInit: function() {
this.component = this.getComponent();
this.model = this.component.getModel("destinModel");
this.setModel(this.model, "Model");
},
为了能够从init函数实际访问模型(如果您打算这样做),您必须等到模型的元数据被加载。要在加载元数据后立即运行代码,ODataModel将提供metadataLoaded函数。此函数返回一个可以连接您的功能的承诺。 E.g:
onInit: function() {
this.component = this.getComponent();
this.model = this.component.getModel("destinModel");
this.setModel(this.model, "Model");
this.model.metadataLoaded().then(function() {
alert("We have the model to our disposal at this point");
}.bind(this));
},