Необходимо удалить параметры выпадающего меню после изменения флага - PullRequest
0 голосов
/ 30 апреля 2019

Я использую select in angularJS, также использовал group by, чтобы показать его в группе. Я использую флаг, который поступает из базы данных, если флаг имеет значение false, я хочу скрыть некоторые параметры, в противном случае, если true, чтобы показать параметры. Мой флаг занимает некоторое время, прежде чем выбор будет обработан, поэтому опция не получает скрытие. как удалить эти опции после того, как я получу свой флаг из базы данных.

<select class="form-control margin-bottom-20" ng-model="tempfilter"
        ng-change="tempFilterChange()"
        ng-options="color.name group by color.shade for color in colorOptions | 
                    filter:notAnOption=true">
     <option value="" selected="selected">View All</option>
</select>

В .JS

$scope.filterOptions = [           
     { value: "1", name: 'black', shade: 'dark', notAnOption: $scope.isWall },
     { value: "2", name: 'red', shade: 'dark', notAnOption: $scope.isWall },
     { value: "3", name: 'green', shade: 'not dark', notAnOption: $scope.isWall },
     { value: "4", name: 'yellow', shade: 'not dark', notAnOption: true },
     { value: "1", name: 'blue', shade: 'not dark', notAnOption: true }
 ];

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Контроллеру необходимо повторно вычислять параметры фильтра при каждом изменении свойства $scope.isWall:

app.controller("ctrl", function($scope) {
  function filterOptions() {
    return [           
     { value: "1", name: 'black', shade: 'dark', notAnOption: $scope.isWall },
     { value: "2", name: 'red', shade: 'dark', notAnOption: $scope.isWall },
     { value: "3", name: 'green', shade: 'not dark', notAnOption: $scope.isWall },
     { value: "4", name: 'yellow', shade: 'not dark', notAnOption: true },
     { value: "1", name: 'blue', shade: 'not dark', notAnOption: true }
    ];
  };
  //INITIALIZE colorOptions
  $scope.colorOptions = filterOptions();
  //UPDATE colorOption
  $scope.wallChange = function() {
    $scope.colorOptions = filterOptions();
    console.log($scope.colorOptions);
  }
})

DEMO на PLNKR

0 голосов
/ 30 апреля 2019

в фильтре параметров ng вы можете вызвать функцию, которая возвращает логический результат.

попробуйте таким образом

    <select class="form-control margin-bottom-20" ng-model="tempfilter"
            ng-change="tempFilterChange()"
ng-options="color.name group by color.shade for color in filterOptions | filter:isNotAnOption">
         <option value="" selected="selected">View All</option>
    </select>



$scope.filterOptions = [           
     { value: "1", name: 'black', shade: 'dark', notAnOption: $scope.isWall },
     { value: "2", name: 'red', shade: 'dark', notAnOption: $scope.isWall },
     { value: "3", name: 'green', shade: 'not dark', notAnOption: $scope.isWall },
     { value: "4", name: 'yellow', shade: 'not dark', notAnOption: true },
     { value: "1", name: 'blue', shade: 'not dark', notAnOption: true }
 ];


$scope.isNotAnOption = function(element){
return element.notAnOption && element.notAnOption === true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...