Сетка пользовательского интерфейса не может получить выбранные строки в случае 2 сеток (одна и та же сетка повторяется дважды)

0

Я создал две сетки ui на одном и том же html (оба одинаковые). Я пытаюсь получить выбранную строку нажатием кнопки отправки. Я могу получить выбранную строку для второй сетки, но не могу получить ее для первой сетки.

Я получаю выбранные строки следующим образом:

 onRegisterApi: function(gridApi) {
    $scope.gridApi = gridApi;
    $scope.mySelectedRows = $scope.gridApi.selection.getSelectedRows();
    }

Plunker: http://plnkr.co/edit/SgYh9QzjCQDOKMMXATlF?p=info

Есть ли способ получить выбранную строку обоих сеток?

Заранее спасибо.

Теги:
angular-ui-grid
ui-grid

1 ответ

1
Лучший ответ

Это связано с тем, что 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));

  }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню