2015-02-04 15 views
5

Ich verwende ngHandsontable Angular Direktive für Handsontable. Ich habe es geschafft, die Daten erfolgreich zu zeigen, aber ich habe Probleme mit dem Zugriff auf die geänderten Zeilen, damit ich die Daten an die Datenbank senden kann.
Ich habe versucht, den AfterChange-Callback zu binden, aber der Index scheint nach der Spaltensortierung ausgeschaltet zu sein. (Zeigt den Index der Zeile auf dem Tisch gezeigt, nicht in der Datenquelle)Zugriff auf handsontable Methoden/Eigenschaften mit nghandsontable

Ich frage mich, was die beste Praxis ist ngHandsontable Daten zu speichern oder das, was ich soll die API wie getData Methode zuzugreifen tun oder columnSorting Eigenschaft

Vielen dank für Deine Hilfe! - Marco

+0

Ich schaute in dieses Problem und versuchte eine Lösung zu finden. Leider hat sich das als sehr schwierig herausgestellt, da die Dokumentation für ngHandsontable fürchterlich ist. Ich würde Ihnen raten, einen Beispielcode zu veröffentlichen, in dem Ihr Problem angezeigt wird, oder einen PLNKR zu erstellen, der Ihre bisherigen Fortschritte anzeigt. Alles, was ich jetzt finden konnte, ist [dieses] (https://github.com/handsontable/ngHandsontable/issues/34) git Problem, das nur vage eine mögliche Lösung beschreibt. – Bricktop

Antwort

4

Ich endete mit AfterInit-Ereignis, um die Instanz zu erhalten und rufen Sie dann die Methoden in weiteren Ereignissen wie dem AfterChange. Diese

ist, wie mein Code wie folgt aussieht:

afterInit: function() { 
     $scope.hot.instance = this; 
    } 

und dann:

afterChange: function (changes, source) { 
     if (source != 'loadData') {   
      var hot = $scope.hot.instance; 
      var dataRow = hot.getSourceDataAtRow(index) 
      // .... saveChanges... 
     }; 
    } 

Vielen Dank an Bricktop für mich den Hinweis zu geben.

0

Ich löste es nur mit dieser Art von Logik:

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

Einfach View-Modell in der Steuerung verwendet

var vm = this; 

und dann können Sie eine der Kern handsontable Verfahren dieser Ansicht Modell nennen wie

this.getCell() 

this.getSourceDataAtRow()