На самом деле я использую это так this.getModel().oData["ProductSet('" + sId+ "')"].Matricule
Пожалуйста, не , а отключите настройку ESLint sap-no-ui5-prop-warning
для случаев, подобных описанным выше. То, как осуществляется доступ к свойству, идет вразрез с соглашениями и правилами кодирования JS.
Не используйте методы или свойства, которые не являются общедоступными
Не используйте и не переопределяйте "приватные" методы или свойства. (...) Всегда перепроверяйте в Справочнике по 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()
.