具有精确匹配的角度重复滤波器

时间:2015-02-13 18:58:54

标签: angularjs

我需要做一个完全匹配的过滤器,但在使其工作时遇到一些麻烦。

I have set up a jsfiddle for this issue工作正常,直到我在这一行添加“:true”。

  <li ng-repeat="worktime in worktimes  = (worktimes | filter:{ employeeId : employeeFilter }:true)">{{worktime.customerName}}</li>

然后它不再起作用了。我做错了什么?

在我的应用程序中,我有一个问题,我希望有同样的原因。

2 个答案:

答案 0 :(得分:1)

您的HTML呈现如下视图

<select ng-model="employeeFilter" style="width: 100px;" class="ng-pristine ng-valid">
    <option value="? string: ?"></option>
    <option value="7" class="ng-scope ng-binding">Jamie</option>
    <option value="37" class="ng-scope ng-binding">Anne</option>
    <option value="8" class="ng-scope ng-binding">James</option>
</select>

employeeFilter的值代表选择框的选项值,它出现在"",如value="7"为Jamie。

您在过滤器中提及true,这意味着您正在进行强类型检查。

在这种情况下7==="7"不正确。因此,在过滤之前,您需要parse将变量integer设置为"7",在解析7将成为7===7后,您将获得预期结果,例如<select ng-model="employeeFilter" style="width: 100px;"> <option data-ng-repeat="employee in employeesFilterList" value="{{employee.id}}">{{employee.username}}</option> </select> //将变为真

<强> HTML

$scope.doParseInt = function(val){
    if(val && val != "")
    return parseInt(val)
} 

<强>控制器

{{1}}

Working Fiddle

这可能对您有所帮助。感谢。

答案 1 :(得分:0)

<li ng-repeat="worktime in worktimes | filter: {'employeeId': employeeFilter} : true ">{{worktime.customerName}}</li>

这将起作用