吊索:sap-no-ui5-prop-warning

问题描述 投票:1回答:2

我想删除ESLint警告。我得到了sap-no-ui5-prop-warning因为我使用了this.getModel().oData["ProductSet('" + sId+ "')"].Matricule。但是当我使用函数getData()时,它返回null。

你有建议如何解决这个问题吗?

sapui5 eslint
2个回答
2
投票

看看docs。这很简单。

/* eslint-disable sap-no-ui5base-prop */

...some code false positives

/* eslint-enable sap-no-ui5base-prop */

Btw getData() for ODataModel已弃用。你可以用getProperty("/")代替。它会为您提供数据的根级别。


0
投票

实际上我像这样使用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()相比。

© www.soinside.com 2019 - 2024. All rights reserved.