0

我正在处理由元素的数据ID过滤的过滤器表达式。角度过滤器表达式

时遇到的问题是,该过滤器将返回多个值,如果其他ID的具有其它位置相同的位(即,过滤器12 RETURNS, 3, 34)。我想只是一个元素与12

JS的精确值返回

angular.module('app', []).controller('TestCtrl', function($scope) { 
$scope.customers = [ 
    { 
    id: 12, 
    name: 'customer 1 - 1' 
    }, 
    { 
    id: 123, 
    name: 'customer 2 - 12' 
    }, 
    { 
    id: 1234, 
    name: 'customer 3 - 12' 
    } 

]; 
}); 

HTML

Filter: <input ng-model="filterCustomer" /> 
<hr/> 
<select size="4" ng-options="customer as customer.name for customer in customers | filter:{id: filterCustomer} track by customer.id" ng-model="customerSelection"> 
</select> 

我也尝试添加下列表达式过滤器匹配位长度......但如预期

filter:{id:filterFsaisCustomer.toString().length} 

Here是它不工作一个Plunker。

回答

1

应该通过增加true你的过滤器内部被用作严格的检查,也应该有刚刚通过使输入字段type="number"将解析到int转换成integer值。

标记

<input type="number" ng-model="filterCustomer" /> 

<select size="4" 
    ng-options="customer as customer.name for customer in customers | filter:{id: filterCustomer}:true track by customer.id" 
    ng-model="customerSelection"> 
</select> 

Working Plunkr

编辑

要启用过滤器后,才在文本框中输入值,那么这将成为有条件的基地严格检查| filter:{id: filterCustomer}:filterCustomer>0

<select size="4" 
    ng-options="customer as customer.name for customer in customers | filter:{id: filterCustomer}:filterCustomer>0 track by customer.id" 
    ng-model="customerSelection"> 
</select> 

Updated Plunkr

+0

@ Kyle.Belanger检查更新,plunkr –

+0

这个工作,但如果中断值从输入 –

+0

@ Kyle.Belanger清除看看更新plunkr及答案 –