简体   繁体   English

如何按类别添加搜索(例如)?

[英]How to add a search for example by category?

How to add a search for example by category ?? 如何按类别添加搜索? How is it connected to filteredUsers ?? 它如何连接到filteredUsers? Help me please... If just add a filter pagination does not work properly. 请帮助我...如果仅添加过滤器分页将无法正常工作。 I do so.But I do not know where to add the filter: 我这样做,但是我不知道在哪里添加过滤器:

 var app = angular.module('appTelDirectory', []); app.controller('directoryList', function($scope, $filter) { $scope.currentPage = 0; $scope.pageSize = 10; $scope.users = []; $scope.category = [{'name':'cat1'},{'name':'cat2'}] // Using a separate list of filtered users $scope.filteredUsers = [{}]; $scope.numberOfPages = function() { return Math.ceil($scope.filteredUsers.length / $scope.pageSize); } for (var i = 0; i < 45; i++) { if(i % 2 == 0) { cat = 'cat1' } else cat= 'cat2'; $scope.users.push({'name':'user'+i,'category':''+cat}); } $scope.filteredUsers = angular.copy($scope.users); $scope.$watch('searchAll', function(newValue) { // Manually filtering here instead doing in the view $scope.filteredUsers = $filter('filter')($scope.users, {$: newValue}); }); }); app.filter('startFrom', function() { return function(input, start) { start = +start; //parse to int return input.slice(start); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="appTelDirectory" ng-controller="directoryList"> <input placeholder="Поиск..." ng-model="searchAll" class="form-control"> <span> Категория </span> <select> <option ng-repeat="category in category | filter:answer">{{category.name}}</option> </select> <ul> <li ng-repeat="item in filteredUsers | startFrom:currentPage*pageSize | limitTo:pageSize">{{item.name}}---->>{{item.category}}</li> </ul> <table> <tr ng-repeat="item in users | startFrom:currentPage*pageSize | limitTo:pageSize"> </table> <button ng-disabled="currentPage == 0" ng-click="currentPage=currentPage-1">Previous</button> {{currentPage+1}}/{{numberOfPages()}} <button ng-disabled="currentPage >= filteredUsers.length/pageSize - 1" ng-click="currentPage=currentPage+1"> Next </button> </div> 
I would be grateful for any help. 我将不胜感激。

Add an ng-model to your select. ng-model添加到您的选择。

<select ng-model="selectedCat">
    <option ng-repeat="category in category | filter:answer">{{category.name}}      </option>
</select>

Add the code to do filter based on category also in the watcher function, watcher函数中,还添加了代码以根据类别进行过滤,

$scope.$watch('searchAll', function(newValue) {
    // Manually filtering here instead doing in the view
    $scope.filteredUsers = $filter('filter')($scope.users, {$: newValue});
    $scope.filteredUsers = $filter('filter')($scope.filteredUsers, {$: $scope.selectedCat});
});

// Another watcher to listen change in the selected category
$scope.$watch('selectedCat', function(newValue) {
    // Manually filtering here instead doing in the view
    $scope.filteredUsers = $filter('filter')($scope.users, {$: newValue});
    $scope.filteredUsers = $filter('filter')($scope.filteredUsers, {$: $scope.searchAll});
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM