如何包括"字符串包含"一个角过滤器内部功能 [英] how to include a "string includes" function inside a angular filter

查看:187
本文介绍了如何包括"字符串包含"一个角过滤器内部功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的工作与复选框过滤,我以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,以确保没有冲突。

工作plunker

 < D​​IV CLASS =COL-XS-3>
            < D​​IV CLASS =复选框复选框-成功复选框内联>
                <输入类型=复选框ID =有源复选框过滤器NG模型=vm.typeFilter.activeNG变化=vm.statusActive('主动')>
                <标签=有源复选框过滤器>活动< /标签>
            < / DIV>
        < / DIV>
        < D​​IV CLASS =COL-XS-3>
            < D​​IV 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.

working plunker

   <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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆