Как динамически изменять ui-сетку с помощью gridOption-enableRowselection в Angular JS

#angularjs #angular-ui-grid

#angularjs #angular-ui-grid

Вопрос:

Мне нужно включать и отключать выбор строк для просмотра в зависимости от некоторых условий. Проблема здесь в том, что несколько представлений используют один и тот же HTML и контроллер. Мне нужно, чтобы выбор строк был отключен для определенного представления и включен в других случаях.

Я пробовал эти. 1) Назначил функцию для enableRowselection, которая возвращала бы логическое значение.(Не сработало) 2) Пробовал и с isRowSelectable.(Не сработало)

Приведенный ниже код.Не уверен, правильно ли это реализовано. Я новичок в AngularJS и ui-grid 1)

 $scope.gridOptions = {
enableRowSelection: isSelectionEnabled
}
 isSelectionEnabled():boolean {
             var seletionEnabled = true;
             if (doesn't satisfy condition) {
                seletionEnabled = false;
             }
            return seletionEnabled ;
         }
  

2)

 $scope.gridOptions = {
isRowSelectable: function() {
                 if(satisfies condition) return true; 
                return false; 
               },
}
  

Комментарии:

1. Я думаю, любое решение будет зависеть от «условия». Мне непонятно, почему вы не можете просто присвоить true или false атрибуту gridoptions enableRowSelection, как только вы определите, включать выбор строк или нет…. Не могли бы вы подробнее рассказать об «условии»?

2. Должен ли быть включен выбор строк или нет, зависит от условия в функции. И поскольку этот же контроллер используется другими представлениями, я хочу, чтобы значение enableRowselection value задавалось динамически в зависимости от возвращаемого значения из функции.

Ответ №1:

Я полагаю, вы знаете, хотите ли вы включить выбор строк при создании ui-grid. Попробуйте что-то вроде:

 $scope.gridOptions.onRegisterApi = function(gridApi) {
  $scope.gridApi = gridApi;

  $scope.gridOptions.enableRowSelection = $scope.isSelectionEnabled();
};

$scope.isSelectionEnabled = function() {
  // some logic here to determine whether to enable rowselection or not
  return true; // or false
};
  

Вы можете в значительной степени изменить $scope.gridOptions.enableRowSelection что угодно, как только ui-grid будет создан.

Посмотрите на этот plunker для примера и / или чтобы попробовать, то ли это, что вы хотите.

Комментарии:

1. Спасибо за ответ. Я хотел бы знать, есть ли какой-либо способ вызвать функцию с html-страницы для того же самого? Я не хочу использовать button. Куда еще я могу позвонить? Функция, записываемая в контроллере.

2. Возможно, использовать классы в HTML из ui-grid. Я обновил Plunker для демонстрации. Найдите классы «с выделением» / «без выделения» в индексных файлах и включите функцию isSelectionEnabled.

Ответ №2:

правильным свойством является «enableRowSelection», попробуйте следующее:

 $scope.gridOptions = {
    enableRowSelection: function () { 

     if(condition){
            return true
      } 
      return false; 
    }
}
  

Комментарии:

1. Это не работает. Он не возвращает значение, полученное из функции.