繁体   English   中英

如何在angularjs中过滤数组值?

[英]How to filter array values in angularjs?

我有两个页面的首页和列表页面。 主页包含带有复选框的服务列表,此处用户一旦选择了一些服务并提交,页面就会重定向到列表页面。 我已将所选值存储在localstorage中,并将所有工作正常但传递到列表页面的过滤器不起作用。 在这里,我正在过滤S_Services,它不起作用。 如果仅选择常规服务,则如何过滤,但是如果选择常规服务,则出现此类软件故障,我选择了它不起作用。 如何显示该S_Services中是否有任何匹配项?

有人可以帮我吗?

 .controller('ListingCtrl', [ '$scope', '$http', '$location', '$window', '$filter','$ionicPopover','$ionicLoading', function($scope, $http, $location, $window, $filter, $ionicPopover, $ionicLoading) { $scope.$watch(function() { return window.localStorage.getItem("searchstore") }, function(searchstore) { $scope.query = searchstore; console.log($scope.query); }); $scope.clearSearch = function() { window.localStorage.setItem("searchstore", ""); }; $http.get('*****').success(function(data,dealers,response) { $scope.dealers = data; console.log(dealers); }); }]) //in console i am getting list of dealers console i am getting like this 1: Object $$hashKey: "object:28" Dealer_id: "55b24172c7d354f30cda0e7f" Legal_Name: "Adtiya Samsung Store" S_Address: Object address_line1: "No.80, Marks Road" area: "madiwala" city: "Bangalore" state: "Karnataka" zipcode: "560068" S_Date_add: "2015-07-24T13:45:23.927Z" S_Email_id: "aditiya@gmail.com" S_Store: "samsung" Store_Name: "Adtiya Samsung Store" S_Services:"Regular Service,Software Faults,Hardware Faults" Store_long_description: "Undertake all kind of samsung mobiles" Store_short_description: "Undertake all kind of samsung mobiles" 2: Object $$hashKey: "object:28" Dealer_id: "55b24172c7d354f30cda0e7g" Legal_Name: "sri shakthi mobile services" S_Address: Object address_line1: "3rd street" area: "madiwala" city: "Bangalore" state: "Karnataka" zipcode: "560068" S_Date_add: "2015-07-24T13:45:23.927Z" S_Email_id: "rajs@gmail.com" S_Store: "nokia" Store_Name: "sri shakthi mobile service" S_Services:"Settings Faults,Regular Service,Hardware Faults" Store_long_description: "Undertake all kind of nokia mobiles" Store_short_description: "Undertake all kind of nokia mobiles" 3: Object $$hashKey: "object:28" Dealer_id: "55b24172c7d354f30cda0e7h" Legal_Name: "sun mobile service center" S_Address: Object address_line1: "23rd main ,2nd cross" area: "madiwala" city: "Bangalore" state: "Karnataka" zipcode: "560068" S_Date_add: "2015-07-24T13:45:23.927Z" S_Email_id: "sprtive23@gmail.com" S_Store: "nokia,samsung" Store_Name: "sun mobile service center" S_Services:"Regular Service" Store_long_description: "Undertake all kind of nokia,samsung mobiles" Store_short_description: "Undertake all kind of nokia,samsung mobiles 
 <div class="bar bar-header item-input-inset"> <label class="item-input-wrapper" > <i class="icon ion-ios-search placeholder-icon"></i> <input type="text" placeholder="Search" ng-model="query" > </label> <button class="button button-icon ion-ios-close-outline" ng-click="clearSearch()" id="iconcolor" >clear</button> </div> <div class="list card" data-ng-init="nearme()" data-ng-repeat="dealer in dealers | filter:query "> <div class="item item-thumbnail-left item-icon-right" href="#"> <h2>{{dealer.Store_Name}}</h2> <p>{{dealer.S_Address.area}} {{dealer.S_Address.city}}</p> <p>{{dealer.S_Services}}</p> </div> </div> 

您将必须创建一个自定义过滤器,以根据dealer对象的属性进行过滤,如下所示。

     .filter('customFil', function () {

return function (dealers, query) {
    var obj = [];

    for (var i = 0; i < dealers.length; i++) {
        var tokenisedString = query.split(",");
        var isPresent = false;
        for (var j = 0; j < tokenisedString.length; j++) {
            if (dealers[i].S_Services.toUpperCase().includes(tokenisedString[j].toUpperCase())) {
                obj.push(dealers[i]);
                break;
            }
        }
    }
    return obj;
}
});

是一个有效的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM