2016-09-28 150 views
0

我在AngularJs應用程序中有一組客戶

var customers = [ 
    { 
     "Name": "Alfreds Futterkiste", 
     "City": "Berlin", 
     "Country": "Germany" 
    }, 
    { 
     "Name": "Ana Trujillo Emparedados y helados", 
     "City": "México D.F.", 
     "Country": "Mexico" 
    } 
]; 

我的問題是如何使用多列過濾。我嘗試了下面的代碼,它不起作用。

編輯

如何上面的語法轉換爲'或'請檢查Sample爲參考。

+0

取決於您的搜索條件。 *「不起作用」*不是很有用的信息 – charlietfl

+0

你確定它不工作嗎?我已經測試過,它的工作原理。請注意,該語法使用「和」進行過濾,這意味着條件可能類似於「將名稱包含此文本的對象和包含相同文本的城市」。是「OR」你需要什麼? –

+0

@AlvaroVazquez是啊「或」是我需要對不起,如果我迷茫你們 –

回答

0

既然你沒有使用自定義的角度濾波器通常我只是用Array.prototype.filter()雖然你也可以使用一個函數的參數與$filter

以下假定部分匹配

$scope.customers = customers.filter(item){ 
    var term = $scope.criteria.searchtext.toLowerCase(); 
    //partial match 
    return item.Name.toLowerCase().indexOf(term) >-1 
      || item.City.toLowerCase().indexOf(term) >-1; 

}); 

這可以迅速變成一個角度自定義過濾器也用於視圖

-1

我創建了一個新的自定義過濾器過濾多列使用OR條件進行檢查,

var myApp = angular.module('myApp',[]); 
 

 
function MyCtrl($scope,myFilterFilter) { 
 
\t $scope.criteria = {}; 
 
    $scope.criteria.searchtext = 'Berlin'; 
 
\t \t var customers =[{"Name":"Alfreds Futterkiste","City":"Berlin","Country":"Germany"}, 
 
{"Name":"Ana Trujillo Emparedados y helados","City":"México D.F.","Country":"Mexico"},{"Name":"Futterkiste","City":"Berlin","Country":"Germany asfdasdas"}] 
 
$scope.customers=myFilterFilter(customers,$scope.criteria.searchtext,$scope.criteria.searchtext); 
 
    
 
} 
 

 

 
angular.module('myApp').filter('myFilter', function() { 
 
    return function(customers,name,city) { 
 
     var yes = []; 
 
     angular.forEach(customers, function(value, key) { 
 
     if ((value['Name'] === name) || (value['City'] === city)) { 
 
      yes.push(value);    
 
     } 
 
     
 
    }); 
 
    console.log(yes) 
 
    return yes 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script> 
 
<div ng-controller="MyCtrl" ng-app="myApp"> 
 
    Hello, {{customers}}! 
 
</div>

Here is the fiddle

+0

誰降低了它? – Sravan

+0

請在downvoting之前查看答案或提出理由。 – Sravan

+0

Downvoter等待回覆。 – Sravan

0

添加過濾器在客戶

<tr class="animate" ng-repeat="customer in customers | filter: criteria.searchtext"> 
<td ng-bind="customer.Name"></td> 
<td ng-bind="customer.City"></td> 
<td ng-bind="customer.Country"></td> 
</tr> 

再往前客戶到$scope如下

$scope.customers = [{}]; // Will be array of customers 

入住這Solution

讓我們知道這對你的作品或沒有。

+0

看看我如何添加一個'filter:criteria.searchtext'這是你將通過搜索,它會過濾你的記錄。試試看,讓我們知道。我已經自己測試過並且工作過。 – Samundra