2015-09-07 25 views
-4

我已經使用AngularJS過濾器來搜索對象,甚至用$深搜索,但是像下面這樣的部分搜索永遠不會返回我期望的結果,我可以分割搜索輸入到數組使用.split(「」),雖然我不知道如何正確地將這個數組傳遞給過濾器。如何用輸入數組搜索對象AngularJS

我試圖定義我自己的過濾器沒有成功。

數據:

[ 
    { 
    Description: "test Description", 
    Color: "Blue", 
    Size: "Large" 
    }, { 
    Description: "aest 2", 
    Color: "orange", 
    Size: "Large" 
    } 
    , { 
    Description: "test 3", 
    Color: "black", 
    Size: "small" 
    } 
] 
  • 搜索輸入 - >預期的行爲
  • 「TES藍光」 - >返回一個結果
  • 「TE DESC」 - >返回一個結果
  • 「purple」 - >返回零結果

關於如何進行的任何建議將不勝感激。

我使用AngularJS:v1.3.13

代碼在這裏:http://plnkr.co/edit/j3NqCtO1qHJrMuj6y2nv?p=preview

+2

你的代碼在哪裏? –

+0

http://plnkr.co/edit/j3NqCtO1qHJrMuj6y2nv?p=preview – swordfish6975

回答

0

這是我如何解決它:http://plnkr.co/edit/W66NxRlh8deRUh6Uxpor?p=preview

var App = angular.module("App",[]); 
    App.controller("testCtrl",function($rootScope,$scope){ 

    $scope.testObjects = [ 
     { 
     Description: "test Description", 
     Color: "Blue", 
     Size: "Large" 
     }, { 
     Description: "aest 2", 
     Color: "orange", 
     Size: "Large" 
     } 
     , { 
     Description: "test 3", 
     Color: "black", 
     Size: "small" 
     } 
     ]; 

    $scope.Search = ""; 


    $rootScope.ScoreThings = function(object , inputArray){ 

      var result = 0; 

      for (var x = 0; x < inputArray.length; x++) 
      { 
        angular.forEach(object, function(value, key) { 
         if (value.toLowerCase().indexOf(inputArray[x].toLowerCase()) > -1) 
         { 
         result ++; 
         } 

        });  

      } 

      return result; 
     } 


    }); 


App.filter('SearchFilter2', function ($rootScope) { 

    return function (items, inputString) { 

    var filtered = []; 
    var inputArray = inputString.split(" "); 
    for (var i = 0; i < items.length; i++) 
    { 
     if ($rootScope.ScoreThings(items[i], inputArray) > (inputArray.length/1.2)) 
     { 
      filtered.push(items[i]); 
     } 
    } 

    return filtered; 
    }; 
}); 

用它在你的觀點一樣:

 <tr ng-repeat="testObject in testObjects | SearchFilter2 : Search ">