Как использовать getCellMeta в afterChange в Handsontable?

Я использую handsontable плагин JS. Я хочу использовать getCellMeta

1 ответов


вы почти там, есть только небольшая ошибка в вашем обратном вызове:doc для afterChange указывает, что первый аргумент (changes) вызова:

2D массив, содержащий информацию о каждой из отредактированных ячеек [[row, prop, oldVal, newVal], ...].

Итак, 2 важные детали:

  • чтобы получить "мета" строки / col пораженной ячейки (предполагая, что есть только один), вам нужно позвонить hot.getCellMeta(change[0][0],change[0][1]) для пример
  • On hot, а не this потому что afterChange функция обратного вызова вызывается из другого контекста (т. е. на другой объект), так this не является правильной целью для вызова, см. как работает ключевое слово" this"?

пример, который считывает весь массив изменений:

var hot = new Handsontable(container, {
  /* rest of init... */
  afterChange : function(changes,source) {
      console.log("Changes:", changes, source);
      if (changes) {
          changes.forEach(function(change) {
              var test = hot.getCellMeta(change[0],change[1]);
              console.log(test.id, test); // 'id' is the property you've added earlier with setMeta         
          });
      }
  }
});

посмотреть демо-скрипка, откройте консоль JS, внесите любые изменения в таблицу.