如何包括"字符串包含"一个角过滤器内部功能 [英] how to include a "string includes" function inside a angular filter
问题描述
我的工作与复选框过滤,我以GeoJSON有状态的属性。状态为值是这样的:
状态
:
法3Q99
块引用>或
状态
:
笏3Q99
块引用>我需要通过法案或笏进行过滤。这里是我的过滤器:
函数StatusFilter(){ 返回功能(territorySubdivisions,typeFilter){
变种过滤= [];
angular.forEach(territorySubdivisions,功能(细分){
如果(typeFilter.active ==真&放大器;&安培; typeFilter.future ==真){
filtered.push(细分);
}
否则,如果(typeFilter.active ==真&放大器;&安培; typeFilter.future ==假放;&安培;!subdivision.properties.status == subdivision.properties.status.indexOf('法案')= - 1){
filtered.push(细分);
}
否则,如果(typeFilter.future ==真&放大器;&安培; typeFilter.active ==假放;&安培;!subdivision.properties.status == subdivision.properties.status.indexOf('笏')= - 1){
filtered.push(细分);
}
});
返回过滤;
};
};这里是我试过了。
subdivision.properties.status.indexOf('法案')!= -1
块引用>这当然是行不通的。我创建了一个工作plunker。我包括其他排序依据和筛选code,以确保没有冲突。
< DIV CLASS =COL-XS-3>
< DIV CLASS =复选框复选框-成功复选框内联>
<输入类型=复选框ID =有源复选框过滤器NG模型=vm.typeFilter.activeNG变化=vm.statusActive('主动')>
<标签=有源复选框过滤器>活动< /标签>
< / DIV>
< / DIV>
< DIV CLASS =COL-XS-3>
< DIV CLASS =复选框复选框-成功复选框内联>
<输入类型=复选框ID =未来的复选框过滤器NG模型=vm.typeFilter.futureNG变化=vm.statusFuture('未来')>
<标签=未来的复选框过滤器>未来< /标签>
< / DIV>
< / DIV>
解决方案您code看起来很奇怪。你不只是需要这样的:
如果(typeFilter.active ===真放;&安培; typeFilter.future ===真){
filtered.push(细分);
}否则如果(typeFilter.active ===真放;&安培; typeFilter.future ===假放;&安培; subdivision.properties.status.indexOf('法案')> = 0){
filtered.push(细分);
}否则如果(typeFilter.future ===真放;&安培; typeFilter.active ===假放;&安培; subdivision.properties.status.indexOf('笏')> = 0){
filtered.push(细分);
}
I am working on filtering with checkboxes, My geojson has a property of status. the status is value looks like this:
status : "Act 3Q99"
or
status : "Fut 3Q99"
I need to filter by "Act" or "Fut". here is my filter:
function StatusFilter() { return function (territorySubdivisions, typeFilter) { var filtered = []; angular.forEach(territorySubdivisions, function (subdivision) { if (typeFilter.active == true && typeFilter.future == true) { filtered.push(subdivision); } else if (typeFilter.active == true && typeFilter.future == false && subdivision.properties.status == subdivision.properties.status.indexOf('Act') != -1) { filtered.push(subdivision); } else if (typeFilter.future == true && typeFilter.active == false && subdivision.properties.status == subdivision.properties.status.indexOf('Fut') != -1) { filtered.push(subdivision); } }); return filtered; }; };
here is what I tried.
subdivision.properties.status.indexOf('Act') != -1
It of course is not working. I created a working plunker. I included other orderBy and filtering code to make sure there were no conflicts.
<div class="col-xs-3"> <div class="checkbox checkbox-success checkbox-inline"> <input type="checkbox" id="active-checkbox-filter" ng-model="vm.typeFilter.active" ng-change="vm.statusActive('active')"> <label for="active-checkbox-filter"> Active </label> </div> </div> <div class="col-xs-3"> <div class="checkbox checkbox-success checkbox-inline"> <input type="checkbox" id="future-checkbox-filter" ng-model="vm.typeFilter.future" ng-change="vm.statusFuture('future')"> <label for="future-checkbox-filter"> Future </label> </div> </div>
解决方案Your code looks strange. Don't you just need this:
if (typeFilter.active === true && typeFilter.future === true) { filtered.push(subdivision); } else if (typeFilter.active === true && typeFilter.future === false && subdivision.properties.status.indexOf('Act') >= 0) { filtered.push(subdivision); } else if (typeFilter.future === true && typeFilter.active === false && subdivision.properties.status.indexOf('Fut') >= 0) { filtered.push(subdivision); }
?
这篇关于如何包括&QUOT;字符串包含&QUOT;一个角过滤器内部功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!