Предположим, я хотел бы ввести текстовый ввод, в котором пользователь вводил бы идентификатор продукта и нажимал ввод, чтобы загрузить данные продукта в представление. Я хочу загружать / просматривать только один продукт за один раз.
Я устанавливаю обработчик событий для ввода текста, который получает введенный идентификатор продукта, а затем вызывает метод read
для модели odata:
onSubmit: function(){
var prodID = sap.ui.getCore().byId("product_id").getValue();
oData.read("/Products('" + prodID + "')", {
success: function(){
console.log(oData.getProperty("/Products('1')/Name")); // Outputs the product name
},
error: function(){}
});
},
Это успешно загружает данные в модель. Тем не менее, модель «обозначена» (из-за отсутствия лучшего термина) /Products('1')
, что означает, что для доступа к данным необходимо знать идентификатор продукта.
Вопрос
Где я могу сохранить текущий идентификатор продукта, чтобы последующие представления знали, как получить доступ к имени загруженного продукта?
В настоящее время у меня определена отдельная модель JSON, в которой я храню активный идентификатор продукта. В моем следующем представлении onBeforeRendering
я читаю этот активный идентификатор продукта, а затем создаю новый контекст, но это не так.
var context = new sap.ui.model.Context(myModel, "/Products(1)");
this.getView().setBindingContext(context, "products");