Как добавить или удалить список значений в массиве на основе выбора флажка в AngularJS и динамической фильтрации?

0
$scope.selectObjectType = function () {
    $scope.selected = []; // clear previous state
     $scope.model.allItemsSelected = true; // all are selected unless...
     // If any object type is not checked, then uncheck the "allItemsSelected" checkbox
    for (var i = 0; i < $scope.model.objectTypes.length; i++) {
        if (!$scope.model.objectTypes[i].isChecked) { 
             //$scope.selected.splice($scope.model.objectTypes[i].value);
            $scope.model.allItemsSelected = false;
            return; 
        } else {
            if ($scope.selected.indexOf($scope.model.objectTypes[i].value) == -1) {
                $scope.selected.push($scope.model.objectTypes[i].value);
            }
        }
    }
};

 // Fired when the checkbox "Show All" is checked
$scope.selectAll = function () {
    // Loop through all the object types and set their isChecked property
    for (var i = 0; i < $scope.model.objectTypes.length; i++) {
        $scope.model.objectTypes[i].isChecked = $scope.model.allItemsSelected;
    }
};

Всякий раз, когда я нажимаю сначала "Показать активированный" и "Показывать инактивированный" в этом списке, он добавляет в массив (выбранный). Но если я нажму "Show InActivated", как первый. Это не добавление к массиву.

Тот же процесс для удаления.

Пожалуйста, помогите нам выполнить это требование.

  • 0
    Есть причина, по которой вы не можете добавить ссылку, и вы добавили ее как код. Пожалуйста, добавьте код от plunkr здесь тоже.
  • 0
    Решение: plnkr.co/edit/WyzAW6DK183gSz5tVrEs?p=preview
Теги:
checkbox

1 ответ

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

Вот вы код в рабочей версии + комментарии, где я изменил ситуацию. Это ссылка на модифицированный плункер.

 $scope.selectObjectType = function () {
      $scope.selected = []; // clear previous state
      $scope.model.allItemsSelected = true; // all are selected unless...
     // If any object type is not checked, then uncheck the "allItemsSelected" checkbox
     for (var i = 0; i < $scope.model.objectTypes.length; i++) {
         if (!$scope.model.objectTypes[i].isChecked) { 
             //$scope.selected.splice($scope.model.objectTypes[i].value);
             $scope.model.allItemsSelected = false;
             // return; // if you return here all other select/unselect will be skipped
         } 
         else {
             if($scope.selected.indexOf($scope.model.objectTypes[i].value) == -1) {
                 $scope.selected.push($scope.model.objectTypes[i].value);
                }
         }

     }
 };

 // Fired when the checkbox "Show All" is checked
 $scope.selectAll = function () {
     // Loop through all the object types and set their isChecked property
     for (var i = 0; i < $scope.model.objectTypes.length; i++) {
         $scope.model.objectTypes[i].isChecked = $scope.model.allItemsSelected;
     }

     $scope.selectObjectType(); // add everything to array after select all - can be optimized
};
  • 0
    большое спасибо
  • 0
    Теперь я получил выбранные значения в области видимости, после этого у меня есть другое требование, основанное на выбранных значениях области видимости ... пожалуйста, проверьте этот поршень. Я четко объяснил свое требование. plnkr.co/edit/PHyT7fH58YrFXgtXn2m2?p=preview

Ещё вопросы

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