返回属性> = number的多重对象

用户名

我设法过滤掉我想要的东西,问题是它只带回了数据库中与之匹配的第一个对象。我试图有一个选择框,其中包含按最低职位工资进行过滤的信息。$ 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 />
西亚兰·菲利普斯(Ciaran Phillips)

这是一个如何做到这一点的小例子。

从您描述的行为来看,听起来您可能是在匹配字符串而不是整数,但是我们不知道您是否不向我们显示更多代码

控制器:

$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将过滤数据

编辑

这个问题显示在这个插件中,我在这里创建了一个fork来解决此问题。

有几个问题

我们在选项列表中手动设置各个薪水选项,因此不需要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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章