2015-04-07 6 views
2

У меня есть форма, которая отображает выпадающие окна выбора для состояний и округов, все, что работает нормально, за исключением случаев, когда я выбираю состояние с одной цифрой, например, число «1», фильтр будет включать в себя другие состояния которые также имеют число «1» в них. Мне нужно точно или точно фильтровать, но не уверен, как код должен искать это, я все еще изучаю Angular.Точное число фильтра Angularjs

Вот мой Javascript:

var app = angular.module('app', []); 

app.controller('myController', function($scope) { 
    $scope.projects = [{ 
name: 'First thing', 
state: 'CA', 
stateID: '1', 
county: 'Orange', 
countyID: '191' 
}, { 
name: 'Another Thing', 
state: 'CA', 
stateID: '1', 
county: 'LosAngeles', 
countyID: '190' 
}, { 
name: 'In California', 
state: 'CA', 
stateID: '1', 
county: 'Orange', 
countyID: '191' 
}, { 
name: 'Hey Arizona!', 
state: 'Arizona', 
stateID: '13', 
county: 'Multiple Counties', 
countyID: '3178' 
},{ 
name: 'hello Utah', 
state: 'Utah', 
stateID: '14', 
county: 'Utah County', 
countyID: '200' 
}]; 

$scope.st_option = [{ 
state: "California", 
stateID: "1" 
}, { 
state: "Arizona", 
stateID: "13" 
},{ 
state: "Utah", 
stateID: "14" 
}]; 

$scope.co_option = [{ 
county: "Orange", 
countyID: "191", 
co_state_id: "1" 
}, { 
county: "Multiple Counties", 
countyID: "3178", 
co_state_id: "13" 
}, { 
county: "Sonoma", 
countyID: "218", 
co_state_id: "1" 
}, { 
county: "Los Angeles", 
countyID: "190", 
co_state_id: "1" 
}, { 
county: "Utah County", 
countyID: "200", 
co_state_id: "14" 
}]; 

$scope.filter = {}; 
$scope.clearFilter = function() { 
$scope.filter = {}; 
}; 
}); 

А Вид:

<div ng-app='app' ng-controller='myController'> 
<h3>Records: {{(projects|filter:filter).length}} of {{projects.length}}</h3> 
<p><input type="text" name="generalSearch" placeholder="Search Project Title" ng-model="filter.name"></p> 
<p><select ng-model="filter.stateID" 
     ng-options="item.stateID as item.state for item in st_option"></select> 
<select ng-model="filter.countyID" 
     ng-options="item.countyID as item.county for item in co_option | filter:{ co_state_id : filter.stateID }"> 
    </select></p> 

<p><a href="" id="clear-filter" ng-click="clearFilter()">Reset Filters</a></p> 

<div ng-repeat="project in projects | filter:filter"> 
<div> 
    <br>Name: {{ project.name }} 
    <br>State: {{project.state}} 
    <br>County: {{project.county}} 
    <br> 
    <span ng-hide="{{project.stateID}} "></span> 
    <span ng-hide="{{project.countyID}} "></span> 
</div> 
</div> 
</div> 

И скрипку:

https://jsfiddle.net/webmastersean/4m2d5n8u/

ответ

2

Установите последний параметр вашей filter к истине, см comparator parameter:

<div ng-repeat="project in projects | filter:filter:true"> 

Редактировать, чтобы для нескольких фильтров:

<input type="text" name="generalSearch" placeholder="Search Project Title" ng-model="filter2.name"> 

<div ng-repeat="project in projects | filter:filter:true | filter:filter2"> 
+0

Да, я думал, что будет ответ тоже, но это нарушает общий поиск, так как пользователь не может начать вводить в строку для фильтрации вниз результаты .... Поэтому я думаю, я должен быть более конкретным в моем вопросе - мне нужно фильтровать точно по состоянию, но НЕ точно в первом поле поиска. –

+0

Добавьте еще один фильтр или напишите функцию пользовательского фильтра. Я изменю свой ответ, чтобы вы могли фильтровать оба. –

Смежные вопросы