Я использую handsontable, и у меня возникают проблемы с тем, чтобы события «beforeChange» и «afterChange» постоянно срабатывали, что я надеюсь использовать для фиксации обновлений базы данных. Я использую следующий код (версия 0.16.1):Удобное редактирование вложенного массива
HTML:
<div id="table"></div>
<div id="output"></div>
JavaScript:
var data = [{
id: 5,
name: 'Sedan',
price: 2000,
tags: ['pink', 'purple']
}, {
id: 6,
name: 'Truck',
price: 1500,
tags: ['green', 'blue']
}, {
id: 6,
name: 'SUV',
price: 1500,
tags: null
}];
var writeMessage = function(msg) {
var output = document.getElementById("output");
var div = document.createElement('DIV');
div.innerHTML = msg;
output.insertBefore(div, output.firstChild);
console.log(msg);
};
var tableDiv = document.getElementById("table");
this.table = new Handsontable(tableDiv, {
data: data,
colHeaders: ["id", "name", "price", "tags"],
columns: [{
data: "id"
}, {
data: "name"
}, {
data: "price"
}, {
data: "tags"
}],
beforeChange: function(changes, source) {
writeMessage("beforeChange: " + changes + ": " + source);
},
afterChange: function(changes, source) {
writeMessage("After Change fired: " + changes);
if (!changes) {
return;
}
var i, idx, key, newVal, modelID;
for (i = 0; i < changes.length; i++) {
idx = changes[i][0];
key = changes[i][1];
newVal = changes[i][3];
modelID = this.getDataAtRow(idx)[0];
writeMessage("New value: " + key + ": " + newVal);
}
}
});
http://codepen.io/anon/pen/GjzrdX?editors=0010
обработчики событий срабатывать, когда я редактированием текстовых и числовых полей и для тегов, когда теги являются нулевыми, но не загораются для объектов данных с массивами тегов (например, розовый, фиолетовый, зеленый, синий). Как я могу активировать события для ячеек тегов без изменения структуры данных? Любой совет будет очень благодарен!
спасибо. Я надеялся избежать лишнего цикла, чтобы обработать преобразование массива в цепочку, но соглашаюсь с вами, что это, по-видимому, единственный способ и, разумеется, не является нарушителем транзакций. Handsontable был удивительным ресурсом, и это незначительное обходное решение. Я ценю, что вы нашли время, чтобы исследовать это. – user628940