2016-09-23 71 views
5

我一直在試圖使角度控制器中的過濾器在過濾數組時是區分大小寫的。

我的數據是如下:

var stoneArr = 
[ 
    { 
     "stone_name": "Diamond", 
     "id": 16 
    }, 
    { 
     "stone_name": "Ruby", 
     "id": 17 
    }, 
    { 
     "stone_name": "Sapphire", 
     "id": 18 
    }, 
    { 
     "stone_name": "Emerald", 
     "id": 19 
    } 
]; 

我的HTML輸入是如下:

<input type="text" name="stone_name" class="form-control" id="stone_name" 
ng-model="propertyName" maxlength="15" required> 

我在控制器濾波器是:

var stoneObj = $filter('filter')(stoneArr, {stone_name:$scope.propertyName}, true); 

這裏陷阱是,當我在輸入字段中輸入「鑽石」

$scope.propertyName = "diamond"; 

過濾器與「鑽石」不匹配此字符串。

我不想刪除從方程精確匹配條件(真),如下圖所示:

var stoneObj = $filter('filter')(stoneArr, {stone_name:$scope.propertyName}); //This won't work for me 

這不適合我,因爲我要匹配的確切字符串過濾數據。數據將具有唯一的「stone_name」值。另外我不想使用任何循環,因爲數組長度將超過1000+。無論如何,我可以做到這一點?

+0

內部的$過濾器是一個循環。我會做一個單一的功能比較,或創建另一個特定的過濾器 –

回答

3

嘗試使用匹配函數來獲取不區分大小寫的匹配:

var stoneObj = $filter('filter')(stoneArr, function (item) { 
    return item.stone_name.toLowerCase() == $scope.propertyName.toLowerCase(); 
},true);