Eslint: sap-no-ui5-prop-warning - PullRequest
       23

Eslint: sap-no-ui5-prop-warning

0 голосов
/ 05 июля 2018

Я хочу удалить предупреждения ESLint. Я получил sap-no-ui5-prop-warning, потому что я использовал this.getModel().oData["ProductSet('" + sId+ "')"].Matricule. Но когда я использую функцию getData(), она возвращает ноль.

У вас есть предложение, как это исправить?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

На самом деле я использую это так this.getModel().oData["ProductSet('" + sId+ "')"].Matricule

Пожалуйста, не , а отключите настройку ESLint sap-no-ui5-prop-warning для случаев, подобных описанным выше. То, как осуществляется доступ к свойству, идет вразрез с соглашениями и правилами кодирования JS.

Проблемы с кодом JavaScript

Не используйте методы или свойства, которые не являются общедоступными

Не используйте и не переопределяйте "приватные" методы или свойства. (...) Всегда перепроверяйте в Справочнике по API. Если пользовательский интерфейс UI5 изменит реализацию в будущем выпуске, ваш код сломается, если вы не будете следовать этому руководству.


Для правильного доступа к значению используйте доступные API - предпочтительно те, которые возвращают context , например 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().

0 голосов
/ 05 июля 2018

Посмотрите на документы . Это просто.

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

...some code false positives

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

Кстати getData() для ODataModel устарела. Вы можете использовать getProperty("/") вместо этого. Это даст вам корневой уровень ваших данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...