2015-04-20 12 views
10

Używam ui-grid. Ale nie mogę pobrać $ scope.gridApi z funkcji pobierania. I uzyskaj błąd: Nie można odczytać właściwości "selekcji" niezdefiniowanej. Ktoś może mi powiedzieć, dlaczego? dzięki.Nie można odczytać właściwości "wybór" niezdefiniowanej

$scope.gridOptions.onRegisterApi = function (gridApi) { 
     $log.info('gridApi...'); 
     $scope.gridApi = gridApi; 
     $log.info($scope.gridApi); 
    }; 
    $scope.download = function ($event) { 
     $event.stopPropagation(); 
     var selectedRows = $scope.gridApi.selection.getSelectedRows(); 
     $log.log('selectedRows....'); 
     $log.log(selectedRows); 
    }; 
+2

Czy to moduł ui.grid.selection jako zależność? – c0bra

+0

tak. Zrobiłem. Manipulacja w $ scope.gridOptions.onRegisterApi nie może zmienić wartości zmiennej. Czemu? Odnosi się do ui-grid? – Charles

+0

spróbuj dodać to do swojej onRegisterApi: gridApi.selection.on.rowSelectionChanged ($ scope, function (row) { // }); – thangcao

Odpowiedz

6

Istnieją trzy potencjalne przyczyny:

  • po pierwsze, nie w tym wybór poprawnie, albo nie w tym moduł w kodzie js jako zależność, albo nie w tym dyrektywy w sprawie definicji siatki w twojej html. Spowoduje to, że gridApi, ale nie gridApi.selection
  • po drugie, próbuje wywołać to przed onRegisterApi wystrzelił, lub zdefiniowanie onRegisterApi na twoim gridOptions po onRegisterApi już zwolniony. Spowoduje to, że metoda nie będzie wywoływana, a zatem $ scope.gridApi będzie niezdefiniowana, co z tekstu błędu brzmi jak problem.
  • Na koniec problemy z twoim wywołaniem, które oznaczają, że zakres $ twojego połączenia pobierania jest inny niż zakres $, w którym umieściłeś gridApi. Tak naprawdę nie powinno się stać, ale myślę, że to możliwe. Można to powiedzieć, umieszczając punkt przerwania w metodzie, aby zobaczyć, jaki ma zasięg $.
0

I rozwiązany ten problem po sprawdzeniu:

  • ui-grid css ładowany (ui-grid.min.css)
  • ui-grid biblioteki javascript załadowane (ui-grid.min.js)
  • 'ui.grid' i 'ui.grid.selection' dodana do modułu inicjalizacji app = angular.module('app',['ui.grid','ui.grid.selection']) `)
  • dodanie ui-grid-s Dyrektywa wybory do adiustacji ui-grid
    <div id="my-grid" ui-grid="gridOptions"ui-grid-selection></div>
Powiązane problemy