Невозможно прочитать "выбор" свойств undefined
Я использую ui-grid. Но я не могу получить $scope.gridApi от функции загрузки. И получите ошибку: Невозможно прочитать "выбор" свойства undefined. Кто-нибудь может сказать мне причину? спасибо.
$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);
};
Ответы
Ответ 1
Существует три потенциальные причины:
- во-первых, не включая правильный выбор, не включая модуль в вашем js-коде в качестве зависимости, или не включая директиву определения вашей сетки в вашем html. Это приведет к наличию gridApi, но не gridApi.selection
- во-вторых, пытаясь вызвать это до того, как onRegisterApi уволил или определил onRegisterApi на ваших gridOptions после того, как onRegisterApi уже запущен. Это приведет к тому, что метод не будет вызван, и поэтому $scope.gridApi будет undefined, который из вашего текста ошибки звучит как проблема.
- Наконец, проблемы с вашим вызовом, которые означают, что $scope вашего запроса на загрузку отличается от $scope, который вы ввели gridApi. Это не должно произойти, но я думаю, это возможно. Вы могли бы это сказать, поставив точку останова в методе, чтобы увидеть, какой у него $scope.
Ответ 2
Я решил эту проблему после проверки:
- загружается ui-grid css (
ui-grid.min.css
)
- Загружена библиотека ji-скриптов ui-grid (
ui-grid.min.js
)
-
'ui.grid'
и 'ui.grid.selection'
добавлены в инициализацию модуля app = angular.module('app',[
'ui.grid','ui.grid.selection'
]))
- добавление директивы ui-grid-selection в разметку ui-сетки
<div id="my-grid" ui-grid="gridOptions"
ui-grid-selection
></div>