我设法过滤掉我想要的东西,问题是它只带回了数据库中与之匹配的第一个对象。我试图有一个选择框,其中包含按最低职位工资进行过滤的信息。$ 50,000 $ 60,000,依此类推。例如,当我选择$ 50,000选项时,返回的唯一结果是工资设置为正好50000的工作。我需要返回的所有值都大于50000的任何帮助。
控制器
$scope.salaryFilter = function (min) {
return min.salaryMin >= $scope.salary_Min ;
}
看法
<label>Salary Desired:</label><br />
<select class="form-control" ng-model="search.salaryMin">
<option value="">Select</option>
<option ng-repeat="salary in jobArray | filter:salaryFilter"></option>
<option ng-model="salary_salaryMin" value="50000">$50,000</option>
<option ng-model="salary.salaryMin" value="60000">$60,000</option>
<option ng-model="salary.salaryMin" value="70000">$70,000</option>
<option ng-model="salary.salaryMin" value="80000">$80,000</option>
<option ng-model="salary.salaryMin" value="90000">$90,000</option>
<option ng-model="salary.salaryMin" value="100000">$100,000</option>
</select><br />
这是一个如何做到这一点的小例子。
从您描述的行为来看,听起来您可能是在匹配字符串而不是整数,但是我们不知道您是否不向我们显示更多代码
控制器:
$scope.data = [
{
"val":27000,
"text":"$27,000"
},{
"val":29000,
"text":"$29,000"
},{
"val":50000,
"text":"$50,000"
},{
"val":70000,
"text":"$70,000"
}];
$scope.name = "John";
$scope.salaryMin = 27000;
$scope.salaryFilter = function(salary) {
if (salary.val >= $scope.salaryMin)
return true;
}
模板:
<select >
<option ng-repeat="salary in data | filter: salaryFilter" value="{{ salary.val }}">{{ salary.text }}</option>
</select>
更改的值$scope.salaryMin
将过滤数据
有几个问题
我们在选项列表中手动设置各个薪水选项,因此不需要ng-repeat
在我们的薪水选择框中。我们还需要此选择框来设置$scope.salary_Min
变量,因此我们不应该在选项标签上将其ng-model
设置为salary.salaryMin
。
<!-- REMOVE THIS -->
<option ng-repeat="salary in jobArray | filter:salaryFilter"></option>
<!-- REMOVE ng-model FROM these -->
<option ng-model="salary_salaryMin" value="50000">$50,000</option>
<option ng-model="salary.salaryMin" value="60000">$60,000</option>
<option ng-model="salary.salaryMin" value="70000">$70,000</option>
<option ng-model="salary.salaryMin" value="80000">$80,000</option>
<option ng-model="salary.salaryMin" value="90000">$90,000</option>
<option ng-model="salary.salaryMin" value="100000">$100,000</option>
因为我们希望选择框设置$scope.salary_Min
变量(在我们的过滤器中使用),所以我们将其添加ng-model
到选择标签中
<select class="form-control" ng-model="salary_Min">
我们之前salaryFilter
在option标签上有,但是我们想用它来过滤表。因此,我们将其添加到正在使用的表中ng-repeat
。可以保留现有的搜索过滤器,因为Angularjs中的过滤器是可堆叠的
<tr ng-repeat="job in jobArray | filter:search | filter:salaryFilter">
<td>{{job.jobTitle}}</td>
<td>{{job.companyName}}</td>
<td>{{job.description}}</td>
<td>{{job.city}}</td>
<td>{{job.salaryMin}}</td>
</tr>
这差不多完成了。剩下的一个问题是我们的过滤器将这些值解释为字符串,这可能会导致一些令人困惑的结果。我们只需要确保使用以下命令将它们解释为整数parseInt()
$scope.salaryFilter = function (min) {
return parseInt(min.salaryMin) >= parseInt($scope.salary_Min) ;
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句