2017-03-21 42 views
0

我想在一個搜索字段中使用空格(例如:Last Name)過濾json屬性,我可以使用空格訪問和打印JSON屬性,但我無法使用空格過濾JSON屬性。如何在搜索字段中使用空格來對JSON屬性應用過濾器?如何在空間上對JSON屬性應用搜索過濾器?

 <div ng-init="jsonData()"> 
      <table border="1" class="table table-striped"> 
       <thead> 
        <tr> 
         <th>First Name</th> 
         <th>Last Name</th> 
         <th>Age</th> 

        </tr> 
       </thead> 

       <tbody> 
        <tr ng-repeat="x in result | filter:searchText"> 
         <td>{{x['First Name']}}</td> 
         <td>{{x['Last Name']}}</td> 
         <td>{{x.Age}}</td> 
        </tr> 
       </tbody> 
      </table> 
     </div> 

回答

0

custom AngularJS filter和使用JavaScript的.trim()功能上搜索文本。

例子:

angular.module('myModule', []) 
    .filter('searchTextWithSpaces', function() { 
     return function(array, searchText) { 
      searchText = searchText.trim(); 
      array = array.filter(function(obj) { 
       return obj["Last Name"].trim().indexOf(searchText) !== -1; 
      }); 
      return array; 
     } 
    }; 
}) 
+0

能否請你解釋一下? –

+0

我添加了一個示例,請參閱文檔以獲取更多參考。 –

+0

我想在json數據中使用空格的特定列應用過濾器@BenBeck –

0

這裏是一個工作示例plunker:

http://plnkr.co/edit/XNMhaPs7gcBDvU0xZm0l

我沒有做了很大的改變,它只是工作。 這是JSON對象屬性和值中的空間。希望有所幫助!

的index.html

<!doctype html> 

<html lang="en" ng-app="app"> 
<head> 
    <meta charset="utf-8"> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script> 
    <script src="scripts.js"></script> 
</head> 

<body ng-controller="SampleController"> 

    Search by Last Name 
    <input type="text" ng-model="searchText"> 

    <table border="1" class="table table-striped"> 
      <thead> 
       <tr> 
        <th>First Name</th> 
        <th>Last Name</th> 

       </tr> 
      </thead> 

      <tbody> 
       <tr ng-repeat="x in result | filter:searchText"> 
        <td>{{x['first name']}}</td> 
        <td>{{x['last name']}}</td> 
       </tr> 
      </tbody> 
     </table> 

</body> 
</html> 

的script.js

angular.module('app', []); 

angular.module('app').controller('SampleController', function ($scope) { 

    $scope.result = [ 
    {"first name": "John", "last name": "Doctor Watson"}, 
    {"first name": "Peter", "last name": "Doctor Who"}, 
    {"first name": "Sherlock", "last name": "Holmes"}, 
    {"first name": "James", "last name": "Moriarty"}   
    ];  

}); 
+0

我想在空間中的JSON數據的特定列上應用過濾器,如何解決這個問題? –

+0

我的plunker示例在數據中使用空格的特定'姓氏'列上應用過濾器。嘗試在文本框中鍵入「doctor who」,看看會發生什麼。這不是你想要達到的目標嗎? –

相關問題