Как обрабатывать привязку данных элементов с сеткой vaadin при использовании dataProvider

Я использую следующий пример из документов vaadin с полимером3

<vaadin-grid id="grid" aria-label="Remote Data Example">
  <vaadin-grid-column path="firstName"></vaadin-grid-column>
  <vaadin-grid-column path="lastName"></vaadin-grid-column>
  <vaadin-grid-column path="email"></vaadin-grid-column>
</vaadin-grid>
<script>
  window.addEventListener('WebComponentsReady', function() {
    const grid = document.querySelector('vaadin-grid');

    grid.size = 200;
    grid.dataProvider = function(params, callback) {
      var xhr = new XMLHttpRequest();
      xhr.onload = function() {
        callback(JSON.parse(xhr.responseText).result);
      };
      var index = params.page * params.pageSize;
      xhr.open('GET', 'https://demo.vaadin.com/demo-data/1.0/people?index=' + index + '&count=' + params.pageSize, true);
      xhr.send();
    };
  });
</script>

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

Я пытался получить доступ к свойству items в сетке, используя this.$.grid.items, но это всегда возвращает количество элементов.

Я хочу иметь возможность сделать что-то вроде this.$.grid.items[0].firstName = 'changed' и отразить изменение в сетке.

Любая помощь приветствуется


person Hyyan Abo Fakher    schedule 19.02.2019    source источник


Ответы (1)


в настоящее время нет API для обновления одного элемента при использовании dataProvider. Один из вариантов — использовать grid.clearCache(), который снова запрашивает данные сетки для видимых строк. Конечно, в этом случае было бы полезно хранить элементы в дополнительном кеше, чтобы избежать ненужных запросов к серверу. Если вы используете path или renderer, вы также можете вызвать grid.render() после изменения подсвойства элемента.

см. vaadin/vaadin-grid#1526 и соответствующую ветку форума

person Hyyan Abo Fakher    schedule 21.02.2019
comment
Интересно, есть ли способ вызывать обновленные строки только при вызове API для передачи обновленных данных в серверную службу API? - person shabarinath; 13.03.2019
comment
В vaadin 14 нет такой вещи, как «grid.clearCache()», где я могу ее найти? - person beatrice; 24.02.2020