2016-06-07 2 views
0

어떻게하면 세련된 검색을 만들까요? 아래 코드를 사용하면 필터가 두 열 모두에서 작동합니다. 예를 들어, John을 입력하면 John Smith & Smith John을 모두 받게됩니다. 에 의해 필터로 드롭 다운을 사용하고 싶습니다. 나는 filter : object.value 또는 뭔가 언급 한 다른 게시물을 보았다.AngularJs 드롭 다운 필터로 검색

드롭 다운을 텍스트 상자에 입력 된 값으로 설정하고 표로 필터링해야한다고 생각합니다.

<div ng-app="searchApp" ng-controller="searchCtrl"> 
    <br> 
    <br> 
    <input type="text" ng-model="searchData"> 

    <table> 
     <thead> 
      <tr> 
       <th>First Name</th> 
       <th>Last Name</th> 
      </tr> 
     </thead> 
     <tbody> 


      <select> 
       <option value="">FilterBy</option> 
       <option value="">FirstName</option> 
       <option value="">LastName</option> 
      </select> 



      <tr ng-repeat="name in names | filter:searchData"> 

       <td>{{name.firstName}}</td> 
       <td>{{name.lastName}}</td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

<script src=" search.js " type="text/javascript "></script> 

의 .js

var searchApp = angular.module('searchApp', []); 
searchApp.controller('searchCtrl', function($scope) { 

$scope.names = [ 
     {"firstName":"John","lastName":"Smith"}, 
     {"firstName":"Smith","lastName":"John"}, 
     {"firstName":"John","lastName":"Doe"}, 
     {"firstName":"Doe","lastName":"Jane"} 
     ]; 



}); 
+0

에 대한 링크,하지만 난 겨 모델 = "search.color에"searchData. (firstName을 또는이 lastName을 변경할 수 할 수 있도록하려면) "드롭 다운에 따라. http://stackoverflow.com/questions/14733136/ng-repeat-filter-by-single-field – cbean14

답변

2

HTML은 I 필터에 NG 변화가 떨어질 그 함수 호출에 필터 객체를 설정했다. 여기

<select ng-model="by" ng-change="filter(by)"> 
<option value="">FilterBy</option> 
<option value="firstName">FirstName</option> 
<option value="lastName">LastName</option> 
</select> 


$scope.filter = function(by){ 
    if(by){ 
    $scope.filterData = { }; 
    $scope.filterData[by] = $scope.searchData; 
    }else{ 
    $scope.filterData = {}; 
    } 
}; 

가 동작하는 예제이 유사 http://codepen.io/mkl/pen/GqpxGZ

+0

그냥 볼 필요가있는 것. 고마워요! 쉬운 것 같아요. 방법으로 필터를 변경하여 두 열을 모두 검색 할 수 있습니다. 그러면 먼저 검색하고 마지막으로 검색 할 수 있습니다. – cbean14

+0

둘 다에 대해 새 옵션을 추가하거나 둘 다 선택하지 않으면 $ scope.filterData = $ scope.searchData가 설정됩니다. . 나는 어떻게 t를 보여주기 위해 나의 예를 업데이트했다. o 옵션을 추가하십시오. – Michael

+0

Michael - ng-change를 사용하면 필터가 더 이상 즉각적이지 않거나 동적 인 것처럼 보입니다. 텍스트 상자에 입력 한 다음 결과가 반환되기 전에 드롭 다운 값을 변경해야합니다. 이 변경 작업을 수행 할 수있는 방법이 있습니까? – cbean14