我想删除ESLint警告。我得到了sap-no-ui5-prop-warning
因为我使用了this.getModel().oData["ProductSet('" + sId+ "')"].Matricule
。但是当我使用函数getData()
时,它返回null。
你有建议如何解决这个问题吗?
看看docs。这很简单。
/* eslint-disable sap-no-ui5base-prop */
...some code false positives
/* eslint-enable sap-no-ui5base-prop */
Btw getData()
for ODataModel已弃用。你可以用getProperty("/")
代替。它会为您提供数据的根级别。
实际上我像这样使用
this.getModel().oData["ProductSet('" + sId+ "')"].Matricule
对于上述情况,请不要禁用ESLint设置sap-no-ui5-prop-warning
。访问属性的方式高度违反约定和JS编码指南。
JavaScript Code Issues
Don't use methods or properties that are not public
不要使用或覆盖“私有”方法或属性。 (...)始终仔细检查API参考。如果UI5在将来的版本中更改了实现,那么如果您未遵循此准则,您的代码将会中断。
为了正确访问该值,请使用可用的API - 最好是返回上下文,例如createBindingContext
[api]或getBindingContext
[api]:
createProductContext: function(productId /*, ...*/) {
const myODataModel = /*...*/;
const path = myODataModel.createKey("/ProductSet", {
ProductID: productId, // See https://stackoverflow.com/a/47016070/5846045
});
myODataModel.createBindingContext(path, this.handleProductContext.bind(this));
},
handleProductContext: function(context) {
if (!context) {
return; // error - Context couldn't be created
}
const matricule = context.getProperty("Matricule"); // <-- Access property value
// ...
},
如果绑定上下文已经可用:
someMethod: function() {
const context = this.byId("thatControlHavingODataBound").getBindingContext(/*modelName*/);
this.handleProductContext(context);
},
通过上下文访问属性可确保客户端上的数据已经可用,与myModel.getProperty()
相比。