2013-04-22 2 views
4

Моя команда пытается следующее:Как добавить строку в ng-сетку, а затем выбрать эту строку?

$scope.addTest = function() { 
     var TestRow = { 
      "name": "xx", 
      "description": "xx", 
      "subjectId": 15 
     }; 
     $scope.gridOptions.selectAll() 
     var testRowLength = $scope.gridData.push(TestRow); 
     $scope.gridOptions.selectItem(testRowLength - 1, true); 
    } 

Однако последний SelectItem не правильно сделать выбор. Поэтому мы попытались следующее:

 $scope.$apply(function() { 
      $scope.gridData.push(TestRow); 
      $scope.gridOptions.selectItem(testRowLength - 1, true); 
     }); 

Теперь мы получаем сообщение об ошибке, говорящее:

Error: $apply already in progress 

Эта проблема размещена как вопрос о блоге нг-сетки, но это только была размещена, и мы должны помогите с этим как можно скорее. Я надеюсь, что кто-то может дать нам советы о том, как мы можем

+0

Привет, в testRowLength у вас есть получил последнюю добавленную строку, а не длину сетки, так что, возможно, она будет работать лучше, например var lastRow = $ scope.gridData.push (TestRow); var gridLength = $ scope.gridData.length; $ scope.gridOptions.selectItem (gridLength - 1, true); попробуйте с var index = this.row.rowIndex; $ scope.gridOptions.selectItem (индекс, истина); – Whisher

ответ

7

Вы слишком быстро выбираете строку, используйте вместо этого событие ngGridEventData. Я толкаю новые строки в начало сетки, поэтому скроллинг немного проще:

$scope.add = function(){ 
    var emptyContact = Utilities.newContact(); 
    var e = $scope.$on('ngGridEventData', function() { 
     $scope.contactsGridOptions.selectItem(0, true); 
     window.scrollTo(0,0); 
     e(); 
    }); 

    $scope.contacts.unshift(emptyContact); 
}; 

Подробнее о прокрутке: How do I scroll an ngGrid to show the current selection?

Связанных вопросы нг сетки: https://github.com/angular-ui/ng-grid/issues/354

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

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