2016-07-19 5 views
0

Ich versuche, den Wert der Zahl Zeile ausgewählt, und drucken Sie es in HTML mit Angularjs, aber kein Problem, Ich habe die Zählung nur wenn ich Klicken Sie im Spaltenkopf des Grids auf. Der Wert von "selectedRowsCounter" 0 in html, wenn ich in der Rasterheader klicken dosn'tSo erhalten Sie den Wert der ausgewählten Zeile direkt im HTML-Format mit ag-grid

mein Code wie

var activeButtons = function() { 
     var countRowsSelected = $scope.gridOptions.api.getSelectedRows().length; 
    $scope.selectedRowsCounter = countRowsSelected; 
    console.log($scope.selectedRowsCounter); 
    $rootScope.count.selectedRows = countRowsSelected; 
}; 

$scope.gridOptions = { 
    rowData: null, 
    angularCompileRows: true, 
    onSelectionChanged: activeButtons, 
} 

ein Screenshot

ist

enter image description here

Ich habe das gleiche Thema hier geöffnet https://github.com/ceolter/ag-grid/issues/1023

Antwort

0

Ich habe diese Zeile zu activ hinzugefügt EBUTTONS Funktion und es funktioniert

$scope.gridOptions.api.refreshView(); 

ich wusste nicht, ob es eine gute Lösung ist, sondern dass die Arbeit jetzt

0

Das Problem scheinen, weil Ag- mit kantigem ist keine Kenntnis von der $ scope Eigenschaftsänderung zu Grid sagt Angular nicht, dass es etwas im $ scope geändert hat. Obwohl es schwer zu sagen ist, wenn Sie Ihre Sicht nicht zeigen.

Sie können onSelectionChanged auf die Art verwenden, wie Sie es verwenden, um zu wissen, wie viele Zeilen ausgewählt wurden, aber Sie müssen Angular mitteilen, dass sich etwas in seinem $ scope geändert hat, indem Sie es anwenden.

Etwas wie folgt aus:

var activeButtons = function() { 
    var countRowsSelected = $scope.gridOptions.api.getSelectedRows().length; 
    $scope.selectedRowsCounter = countRowsSelected; 
    console.log($scope.selectedRowsCounter); 
    $rootScope.count.selectedRows = countRowsSelected; 
    window.setTimeout(function() { 
     this.$scope.$apply(); 
    }); 
}; 

diese Weise können Sie die $ Umfang und die HTML-Ansicht anwenden können, werden die Änderungen widerspiegeln.

+0

Vielen Dank für Ihre Antwort, - Timeout in jeder Änderung machte meinen Code sehr langsam !! –

+0

können Sie es auf 0 setzen. Es wird nicht sofort ausgeführt, sondern auf den nächsten Tick. Das sollte die Dinge nicht merklich verlangsamen. 'setTimeout (function() {$ scope. $ Apply();}, 0);' – iberodev

+0

was ist das beste zwischen deiner Methode und der refreshVew-Methode von ag-grid, danke –

Verwandte Themen