Как использовать 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, внесите любые изменения в таблицу.