var app = angular.module('myApp', []); app.factory('filterService', function () { return { activeFilters: {}, searchText: '' }; }); app.controller('ListCtrl', function ($scope, filterService) { $scope.filterService = filterService; $scope.teamsList = [{ id: 1, name: 'Dallas Mavericks', sport: 'Basketball', city: 'Dallas', featured: true }, { id: 2, name: 'Dallas Cowboys', sport: 'Football', city: 'Dallas', featured: false }, { id: 3, name: 'New York Knicks', sport: 'Basketball', city: 'New York', featured: false }, { id: 4, name: 'Brooklyn Nets', sport: 'Basketball', city: 'New York', featured: false }, { id: 5, name: 'New York Jets', sport: 'Football', city: 'New York', featured: false }, { id: 6, name: 'New York Giants', sport: 'Football', city: 'New York', featured: true }, { id: 7, name: 'Los Angeles Lakers', sport: 'Basketball', city: 'Los Angeles', featured: true }, { id: 8, name: 'Los Angeles Clippers', sport: 'Basketball', city: 'Los Angeles', featured: false }, { id: 9, name: 'Dallas Stars', sport: 'Hockey', city: 'Dallas', featured: false }, { id: 10, name: 'Boston Bruins', sport: 'Hockey', city: 'Boston', featured: true }]; }); app.controller('FilterCtrl', function ($scope, filterService) { $scope.filterService = filterService; });
<section ng-app="myApp"> <section ng-controller="FilterCtrl"> <form> <div> <label>Search:</label> <input type="text" ng-model="filterService.searchText"> </div> <div> <label>Sport:</label> <select ng-model="filterService.activeFilters.sport"> <option ng-repeat="sport in ['Basketball', 'Hockey', 'Football']">{{sport}}</option> </select> </div> <div> <label>City:</label> <select ng-model="filterService.activeFilters.city"> <option ng-repeat="city in ['Dallas', 'Los Angeles', 'Boston', 'New York']">{{city}}</option> </select> </div> <div> <label>Featured:</label> <input type="checkbox" ng-model="filterService.activeFilters.featured" ng-false-value="" /> </div> </form> </section> <section ng-controller="ListCtrl"> <table> <thead> <tr> <th>Name</th> <th>Sport</th> <th>City</th> <th>Featured</th> </tr> </thead> <tbody> <tr ng-repeat="team in teamsList | filter:filterService.activeFilters | filter:filterService.searchText"> <td>{{team.name}}</td> <td>{{team.sport}}</td> <td>{{team.city}}</td> <td>{{team.featured}}</td> </tr> </tbody> </table> </section> </section>