2017-02-27 54 views
2

我想應用一個動態角度過濾器到md數據表來搜索網格上的數據。但它似乎沒有在這裏工作是什麼,我試圖完成一個小exapmple:角度材料數據表搜索過濾器

<md-input-container> 
     <label> Search Table </label> 
     <input ng-model="filter.search"> 
    </md-input-container> 

    <tr md-row md-select="dessert" md-auto-select ng-repeat="dessert in desserts.data | filter: filter.search | orderBy: query.order | limitTo: query.limit : (query.page -1) * query.limit"> 
+0

請添加控制器代碼。 – nextt1

+0

我正在使用此代碼筆爲md數據表:http://codepen.io/anon/pen/qbLaMb 我要添加的所有內容都是搜索輸入字段以嘗試過濾數據 – Flash

+0

http:///codepen.io/next1/pen/OpyQXW它正在工作 – nextt1

回答

1

正如你表明,我加入了自定義過濾器如你所說,這將做。

這是自定義過濾器。

$scope.filters = []; 
$scope.$watch('filter.search', function(newValue, oldValue) { 
if(newValue != undefined){ 
    $scope.filters = newValue.split(" "); 
} 
}) 

$scope.searachData = {}; 

$scope.customSearch = function(item) { 
$scope.searachData.status = true; 

angular.forEach($scope.filters, function(value1, key) { 
    $scope.searachData.tempStatus = false; 
    angular.forEach(item, function(value2, key) { 
    var dataType = typeof(value2); 

    if(dataType == "string" && (!value2.includes('object'))){ 
     if(value2.toLowerCase().includes(value1)){ 
     $scope.searachData.tempStatus = true; 
     } 
    }else if(dataType == "object"){ 
     var num = value2.value.toString(); 
     if(num.includes(value1)){ 
     $scope.searachData.tempStatus = true; 
     } 
    } 
    }); 
      $scope.searachData.status = $scope.searachData.status & $scope.searachData.tempStatus; 
}); 

return $scope.searachData.status; 
}; 

這裏是工作Example

+0

謝謝!我會試着按照這個例子 – Flash

+0

當我的數據被硬編碼時它工作正常。但是當我從服務中獲得它時,它似乎會拋出很多控制檯錯誤。但我現在試圖調試它 – Flash

+0

由於您的對象結構,您可能會遇到一些錯誤。請提供您的對象結構,我會做必要的更改。 – nextt1