我有一个过滤器,像这样:角JS过滤数
<tr ng-repeat="c in CategoryList | filter: {CategoryOption.CategoryOptionID: FilterByType}">
值:FilterByType被从未示出的下拉列表中设置。
这工作得很好,除非FilterByType的值是2,例如,那么它会过滤结果以显示2,22,32,42等。它不是真正的数字比较。它更像一个字符串。包含有点儿东西。
任何想法如何锁定它?
我有一个过滤器,像这样:角JS过滤数
<tr ng-repeat="c in CategoryList | filter: {CategoryOption.CategoryOptionID: FilterByType}">
值:FilterByType被从未示出的下拉列表中设置。
这工作得很好,除非FilterByType的值是2,例如,那么它会过滤结果以显示2,22,32,42等。它不是真正的数字比较。它更像一个字符串。包含有点儿东西。
任何想法如何锁定它?
您可以使用函数像这样的过滤器:
<tr ng-repeat="c in CategoryList | filter: myCustomFilter">
然后定义一个函数来做你想要的任何比较:
$scope.myCustomFilter = function(element) {
if ($scope.FilterByType) {
return element.number === parseInt($scope.FilterByType);
}
return true;
}
这提供了完全控制的过滤器,也将有助于防止输入类型(文字,数字等)不匹配模型的实际类型的一些怪异的行为。
添加true
作为第三个参数来筛选表达式中启用严格的比较:
<tr ng-repeat="c in CategoryList | filter: {CategoryOption.CategoryOptionID: FilterByType}:true">
注:这需要AngularJS V1.1.3 +
之前,这个方法我试过,但继续得到同样怪异的行为。 – AnthonySG
添加:true
为我工作。
ng-repeat="proj in projectList | filter: {ID: project.p_id} :true"
感谢
完美工作。谢谢! – AnthonySG