Angular自定义过滤器只返回布尔值=== true的结果
angular custom filter only return results where boolean === true
我在Angular 1的ng-repeat
列表中使用了一个自定义过滤器。
过滤器成功过滤搜索结果,但是它不工作,因为我需要它。
目前,根据过滤器是否存在对结果进行过滤。例如"清洁"或"DIY"或"营销"
但是,过滤器是而不是检查布尔值是true
还是false
。
所以'cleaning: false'的结果和'cleaning: true'的结果包含在同一个ng-repeat中
我只想在过滤器对象(例如清洁)计算为true
时返回结果。
我没有太多编写自己的过滤器的经验,所以任何正确方向的输入或推动都将真的非常感谢!提前感谢!
下面是选项select下拉列表:
<select class="sortBy" ng-model="selectedCat" ng-value="x.filter" ng-options="x.cat for x in taskCategories">
</select>
这是过滤器正在检查的数组,数组中的每个对象都有一个标题要在下拉选择选项中显示,我想让它运行的过滤器:
$scope.taskCategories = [{
'cat': 'All',
'filter': ''
}, {
'cat': 'Cleaning',
'filter': 'cleaning: true'
}, {
'cat': 'Moving & Delivery',
'filter': 'moving: true'
}, {
'cat': 'DIY',
'filter': 'DIY: true'
}, {
'cat': 'Marketing & Design',
'filter': 'marketing: true'
}, {
'cat': 'Digital & IT',
'filter': 'onlineIT: true'
}, {
'cat': 'Events & Photography',
'filter': 'photoEvents: true'
}, {
'cat': 'Business & Admin',
'filter': 'office: true'
}, {
'cat': 'Fun & Quirky',
'filter': 'funQuirky: true'
}, {
'cat': 'Misc & Other ',
'filter': 'misc: true'
}];
下面是自定义过滤器:
.filter('customFilter', function() {
return function(items, search) {
if (!search) {
return items;
}
return items.filter(function(element) {
//attempt 1
return Object.getOwnPropertyNames(element).find(function(x) {
return x === search.substring(0, search.indexOf(':'));
});
//attempt 2
return Object.getOwnPropertyNames(element).find(function(x) {
return x === search.substring(0, 2);
});
//attempt 3
return Object.getOwnPropertyNames(element).find(function(x) {
return x === search;
});
//attempt 4
return Object.getOwnPropertyNames(element).find(function(x) {
if(x === true) {
return x === search.substring(0);
}
});
});
};
});
一个解决方案是使过滤器是2个不同的属性?
设置为{
'cat': 'Moving & Delivery',
'filter': {'moving', true}
}
现在进入你的过滤器。对照每一部分,决定是否添加。因此,通过使用filter[1]检查其是否为相同的bool值,并检查项是否具有filter[0]的属性。
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- AngularJS-使用'true'属性
- if(foo!==null)的计算结果为true,即使foo为null
- ngIf的计算结果始终为true
- 为什么-0===0的求值结果为true
- 设置为负数的变量计算结果为true
- 为什么 {} == false 的计算结果为 false,而 [] == false 的计算结果为 true
- 使用 JavaScript 搜索字符串,如果结果为 true,则重定向页面
- 为什么空的 JavaScript 数组在条件结构中的计算结果为 true
- Javascript 布尔值:false && true 结果为 true
- window.jQuery==true的计算结果为false,尽管window.jQuery=false计算结果为tru
- 如果前一个ajax的结果为true,则调用另一个ajax
- 如果([]== false)为真,为什么([]|| true)的结果是[]?
- Regex for date的计算结果为true,即使字符错误
- KnockoutJs 1.3测试版._destroy:false在UI上的结果与_destroy:true相同
- Angular自定义过滤器只返回布尔值=== true的结果
- 为什么 “” < {} 的计算结果为 true
- 在Javascript中,为什么'-' === '-'的计算结果为true?并且是破折号 (-) js 字符串中的转