2016-05-31 145 views
0

我是angularjs的新手。我正在制定一個要求,我有一個表格,並且在表格的每一列上都有一個用於搜索該列的文本框。這些列包括名稱(文本),DateofHike(日期),Gender(文本),Salary(數字),薪水(數量)。當我搜索Salary第一次工作時,我清除文本和搜索名稱它沒有帶來搜索結果。Angularjs的自定義搜索

我的js文件的代碼

var FilterApp = angular.module("FilterModule", []); 
FilterApp 
    .controller("RowsToDisplay", function ($scope) { 
     var EmpDetails = [ 
      { name: "phani_1", DOB: new Date("November 9 2008"), Gender: "Male", SalaryNumber: 8000 }, 
      { name: "phani_2", DOB: new Date("January 31 2010"), Gender: "Male", SalaryNumber: 17200 }, 
      { name: "phani_7", DOB: new Date("October 31 2012"), Gender: "Male", SalaryNumber: 23500 }, 
      { name: "phani_4", DOB: new Date("October 11 2012"), Gender: "Male", SalaryNumber: 2500 }, 
      { name: "phani_5", DOB: new Date("November 30 2013"), Gender: "Male", SalaryNumber: 41750 }, 
      { name: "phani_6", DOB: new Date("December 31 2014"), Gender: "Male", SalaryNumber: 48450 } 
     ];  
     $scope.funSearch = function (item) { 
      if ($scope.SearchText == undefined) { 
       return true; 
      } 
      else { 
       if ($scope.SearchText.name != undefined) { 
        if (item.name.toLowerCase().indexOf($scope.SearchText.name.toLowerCase()) != -1) { 
         return true; 
        } 
       } 
       else if ($scope.SearchText.Gender != undefined) { 
        if (item.Gender.toLowerCase().indexOf($scope.SearchText.Gender.toLowerCase()) != -1) { 
         return true; 
        } 
       } 
       else if ($scope.SearchText.SalaryNumber != undefined) { 
        var compare = item.SalaryNumber.toString(); 
        var comparer = $scope.SearchText.SalaryNumber; 
        alert(comparer); 
        if (compare.indexOf(comparer) != -1) { 
         return true; 
        } 
       } 

      } 
      return false; 
     } 
    }); 

我的HTML代碼

<tr> 
        <td><input type="text" placeholder="Search name" ng-model="SearchText.name" /></td> 
        <td><input type="text" placeholder="Search DOB" ng-model="SearchText.DOB" /></td> 
        <td><input type="text" placeholder="Search Gender" ng-model="SearchText.Gender" /></td> 
        <td><input type="text" placeholder="Search SalaryNumber" ng-model="SearchText.SalaryNumber" /></td> 
        <td><input type="text" placeholder="Search currency" ng-model="SearchText.SalaryNumber" /></td> 
       </tr> 
       <tr ng-repeat="objEmpDetail in EmpDetails | orderBy:sortColumn:reverseSort | filter:funSearch"> 
        <td>{{objEmpDetail.name | uppercase}}</td> 
        <td>{{objEmpDetail.DOB|date:"dd/MM/yy"}}</td> 
        <td>{{objEmpDetail.Gender|lowercase}}</td> 
        <td>{{objEmpDetail.SalaryNumber| number:2}}</td> 
        <td>{{objEmpDetail.SalaryNumber| currency:"$":1}}</td> 
       </tr> 

請給我建議。

+1

請編輯問題並使用編輯器中的代碼示例按鈕來正確地設置代碼格式 – TMG

回答

0

看來您正在使用Angular的filter並將您的控制器中的funSearch函數傳遞給它。如果您想將其用作過濾器,則最好構建自定義過濾器並將其註冊到您的應用。 看看這個建立自定義過濾器的參考:https://docs.angularjs.org/guide/filter