UI5: обновить таблицу, содержащую относительную временную метку, без изменений в модели

#sapui5

#sapui5

Вопрос:

Проблема

В настоящее время я работаю над представлением, содержащим таблицу. Один из столбцов представляет собой относительную временную метку последнего обновления элементов в таблице (последнее обновление: 6 секунд назад), используя

 <Text text="{
  path: 'lastUpdate',
  type: 'sap.ui.model.type.DateTime',
  formatOptions: {
    source: {pattern: 'yyyy-MM-ddTHH:mm:ss.SSSZZZZ'}, 
    relative: true,
    relativeScale: 'auto'
  }
}"/>
  

До сих пор я передавал текущую модель из серверной части с каждым запросом get, поэтому представление всегда обновлялось вместе с моделью при каждом обновлении. Однако, чтобы сэкономить пропускную способность, я решил поместить If-Modified-Since условие в вызов, чтобы серверная часть отправляла мне модель только в том случае, если она действительно была обновлена с момента последнего вызова, в противном случае она возвращает 304.

Однако проблема, с которой я сталкиваюсь сейчас, заключается в том, что, поскольку модель больше не заменяется, представление в равной степени не обновляется, и самое последнее событие будет зависать, например. «Последнее обновление: 15 секунд назад» в течение нескольких минут; пока не появится новое обновление.

Вопрос

Я ищу функцию, которая сообщает представлению (или даже просто таблице или конкретному столбцу) обновить его содержимое в соответствии с новым текущим временем, даже если базовые данные не изменились.

До сих пор я нашел и попробовал

that.byId("myTable").getBinding("items").refresh();

но это ничего не дало, я полагаю, потому что он все еще распознал, что данные не изменились.

Редактировать: следуя принятому ответу, вызов that.getView().getModel().refresh(true); действительно дал ожидаемые результаты.

Ответ №1:

Вы пытались использовать .refresh(true)

Демонстрация DemoKit для привязки sap.ui.model.odata.v2.odatalist:

 refresh(bForceUpdate?, sGroupId?) : void
  

с bForceUpdate, означающим «Обновить связанный элемент управления, даже если данные не были изменены»

Комментарии:

1. Я безуспешно пытался обновить привязку таблицы, но вызов .refresh(true); модели представления вместо таблицы работал так, как предполагалось.