2016-04-06 2 views
1

Я хочу, чтобы выбрать все строки сетки по умолчанию, и мне удалось сделать это путем добавления слушателя данных в onRegisterApi, как указано в this answer:Programatically выберите строку в UI-сетке без слушателя

onRegisterApi : function(gridApi) 
    { 
     $scope.gridApi = gridApi; 
     $scope.gridApi.grid.registerDataChangeCallback(function(data) 
     { 
      $scope.gridApi.selection.selectRow($scope.gridOptions.data[0]); 
     }, [uiGridConstants.dataChange.ROW]); 
    } 

Рабочих plunkr: http://plnkr.co/edit/dzf6PZwKdZmSNvKzQeYH?p=preview

Однако, я не понимаю, почему он не работает без слушателя, как

onRegisterApi : function(gridApi) 
    { 
     $scope.gridApi = gridApi; 
     _.each($scope.gridOptions.data, function(companies, index){ 
      $scope.gridApi.selection.selectRow($scope.gridOptions.data[index]); 
     }); 

    } 

нерабочего plunkr: http://plnkr.co/edit/XOliwXn2MLyH6nqO7pp4?p=preview

Может кто-нибудь сказать мне, почему?

ответ

1

Я использовал ниже код для угловой версии 1.5.0. Он работает для меня.

app.controller('MainCtrl', ['$scope', '$http', '$interval', 'uiGridConstants','$location', function ($scope, $http, $interval, uiGridConstants, $location) { ............... 

// $ интервал в то время как мы ждем сетки, чтобы переварить данные, мы просто дали ему

$interval(function() {$scope.gridApi.selection.selectRow($scope.gridOptions.data[0]);}, 0, 1); 
+0

Спасибо, что ответили на такой старый вопрос! – user3255061

0

Это действительно работает, вам просто нужно дождаться загрузки сетки, например, с небольшим таймаутом. Таким образом, браузер отображает ваш DOM и выполняет JS впоследствии, даже с очень небольшим таймаутом. See this answer about timeout.

I .

setTimeout(function(){ 
    _.each($scope.gridOptions.data, function(companies, index){ 
    $scope.gridApi.selection.selectRow($scope.gridOptions.data[index]); 
    }); 
}, 1); 
+0

Спасибо за вашу помощь, но в соответствии с https://github.com/angular-ui/ui-grid/issues/2267 # issuecomment-128551701 не должно быть больше $ timeout. – user3255061

 Смежные вопросы

  • Нет связанных вопросов^_^