我需要做一个完全匹配的过滤器,但在使其工作时遇到一些麻烦。
I have set up a jsfiddle for this issue工作正常,直到我在这一行添加“:true”。
<li ng-repeat="worktime in worktimes = (worktimes | filter:{ employeeId : employeeFilter }:true)">{{worktime.customerName}}</li>
然后它不再起作用了。我做错了什么?
在我的应用程序中,我有一个问题,我希望有同样的原因。
答案 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}}
这可能对您有所帮助。感谢。
答案 1 :(得分:0)
<li ng-repeat="worktime in worktimes | filter: {'employeeId': employeeFilter} : true ">{{worktime.customerName}}</li>
这将起作用