I'm using ngHandsontable Angular directive for Handsontable. I managed to show the data successfully, but I'm struggling with getting access to the modified rows so I can send the data to the DB.
I tried binding the afterChange callback, but the index seems to be off after column sorting. (shows the index of the row shown on the table, not in the dataSource)
I wonder what's the best practice to save ngHandsontable data or what I should do to access the API like getData method or columnSorting property
Thanks a lot for your help!
- Marco
I ended up using afterInit event to get the instance and then call the methods in further events like the afterChange.
This is how my code looks like:
afterInit: function() {
$scope.hot.instance = this;
}
and then:
afterChange: function (changes, source) {
if (source != 'loadData') {
var hot = $scope.hot.instance;
var dataRow = hot.getSourceDataAtRow(index)
// .... saveChanges...
};
}
Thanks a lot to Bricktop for giving me the hint.
I just solved it with this sort of logic:
post: function postLink(scope, iElement, iAttrs, controller) {
var hotDiv = iElement.find("div[hot-table]")
var hotInstance = hotDiv.isolateScope().hotInstance;
hotInstance.addHook('afterLoadData', function(){
console.log("loaded data");
});
}
Simply use view model in the controller
var vm = this;
and then you can call any of the core handsontable method of this view model like
this.getCell()
this.getSourceDataAtRow()