javascript - Cascading selects AngularJS filter not display data in second time -


considering code below:

<html ng-app="app">   <head>     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.3/angular.min.js"></script>   </head>   <body ng-controller="appctrl">     <div class="filters">       <div>         color: <select id="color" ng-model="colorfilter" ng-options="car.color car.color car in cars | unique:'color'" ng-change="changecolor()">         </select>         model: <select id="model" ng-disabled="!colorfilter" ng-model="modelfilter" ng-options="car.model car.model car in cars | filter:{color:colorfilter} | unique:'model'" ng-change="changemodel()">         </select>       </div>     </div>     <div class="list">       <p class="car" ng-repeat="car in cars | filter:colorfilter | filter:modelfilter">{{car.make}} :: {{car.model}} | {{car.color}}</p>     </div>   </body> </html> 

and controller.js:

angular.module('app', []) .filter('unique', function() {   return function(input, key) {     var unique = {};     var uniquelist = [];     for(var = 0; < input.length; i++){         if(typeof unique[input[i][key]] == "undefined"){             unique[input[i][key]] = "";             uniquelist.push(input[i]);         }     }     return uniquelist;   }; }) .controller('appctrl', function($scope) { // define list of cars   $scope.cars = [     {make:"dodge", color:"blue", model:"dakota"},     {make:"chevy", color:"black", model:"aveo"},     {make:"honda", color:"black", model:"accord"},     {make:"toyota", color:"red", model:"corolla"}     //... other lines   ];    // initialize filter object   $scope.filter = {};  }); 

the list of cars displayed complete below select fields. when filter @ first time, first select filters both list of cars (considering selected color) , second select data (only models have selected color). , second select filters list of cars considering selected model. sounds perfect!

however, when try perform new filter, when choose color, not display records in list of cars, works filtering data of second select. choosing 1 of models available in second select, list displayed, combination of 2 selections (such , of selects).

it seems list data being viewed on screen considered first select, needing wait second select display result. intend display results each filter, searching complete list of items.

my full code on codepen.

i think may you're looking for. based on ng-disabled logic, figured want user go in order of selecting color model.

https://codepen.io/cameron64/pen/yzbrqw?editors=1010

to maintain order set color dropdown reset when model dropdown selected from. additionally grouped filter 1 object isn't verbose when passed repeater

$scope.changecolor = function() {   $scope.filter.model = undefined;   $scope.filter.color = $scope.filter.color || undefined; } 

Comments

Popular posts from this blog

inversion of control - Autofac named registration constructor injection -

verilog - Systemverilog dynamic casting issues -

ios - Change Storyboard View using Seague -