Я создал две сетки ui на одном и том же html (оба одинаковые). Я пытаюсь получить выбранную строку нажатием кнопки отправки. Я могу получить выбранную строку для второй сетки, но не могу получить ее для первой сетки.
Я получаю выбранные строки следующим образом:
onRegisterApi: function(gridApi) {
$scope.gridApi = gridApi;
$scope.mySelectedRows = $scope.gridApi.selection.getSelectedRows();
}
Plunker: http://plnkr.co/edit/SgYh9QzjCQDOKMMXATlF?p=info
Есть ли способ получить выбранную строку обоих сеток?
Заранее спасибо.
Это связано с тем, что API регистрируется, когда сетка загружается в DOM. Поскольку у вас есть две сетки с одинаковой областью, когда вторая загрузка, API становится тем, что определяется $ scope.gridApi. Поэтому все, что вы делаете с этим API, взаимодействует со вторым экземпляром сетки.
Решение здесь заключалось бы в том, чтобы отделить решетки, возможно, $ scope.gridOptions1, $ scope.gridOptions2. Для чего-то, что должно произойти на обоих, вы можете вызывать каждый API независимо внутри функции.
Это то, что я сделал бы: http://plnkr.co/edit/nLLR63L4H4NqLoZsGpkS?p=preview
Для вашей функции отправки, предполагая, что вам нужен один массив с результатами, я обновил функцию таким образом, чтобы она давала один результат:
$scope.submitData = function() {
var selectedRows1 = $scope.gridApi1.selection.getSelectedRows(),
selectedRows2 = $scope.gridApi2.selection.getSelectedRows(),
selectedRows = selectedRows1.concat(selectedRows2);
console.warn(selectedRows);
alert(selectedRows.length)
if (selectedRows.length === 0)
alert('Please select an item from grid');
else
alert(JSON.stringify(selectedRows));
}