在onInit
中,我想调用一个API并使用我从此调用中获得的数据设置我制作的模型。
onInit: function() {
// ...
callCRM();
},
callCRM: function() {
var model = new sap.ui.model.json.JSONModel()
model.loadData("api/url", null, true, "GET")
model.attachRequestCompleted(() => {
var data = model.getData()
this.setProperty('/path/key', data.key)
})
},
setProperty
是我不必每次都写this.getModel().setProperty(path, value)
的函数。
在这种形式下,代码不起作用,这意味着我无法看到表单中的值被自动完成。如果我使用带有硬编码字符串的注释,我可以看到输入被填充。
有什么想法吗?
答案 0 :(得分:1)
存在语法错误。正确的用法应该是:
model.attachRequestCompleted(function() {
var data = model.getData();
this.setProperty('/path/key', data.key);
}.bind(this));
查看API reference。在使用function
分配事件处理程序时,请记住bind上下文。否则,处理程序无法找到setProperty
方法。