5

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

Josh
  • 3,264
  • 1
  • 23
  • 35
Marco
  • 91
  • 1
  • 7
  • I looked into this issue and tried to find a solution. Unfortunately this has turned out to be very hard because the documentation for ngHandsontable is dreadful to say the least. I would advice you to post some sample code displaying your issue or creating a plnkr that shows your progress so far. All I have been able to find now is [this](https://github.com/handsontable/ngHandsontable/issues/34) git issue that just vaguely describes a possible solution. – Bricktop Feb 04 '15 at 22:13

3 Answers3

4

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.

Marco
  • 91
  • 1
  • 7
0

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");
    });
}
0

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()
rahulthakur319
  • 455
  • 4
  • 16