2017-02-22 24 views
1

В сетке пользовательского интерфейса AngularJS я получаю объект JSON и привязываю его к сетке. Теперь я хочу фильтровать строки на основе нескольких условий из некоторых флажков.Фильтр-массив объекта в сетке UL AngularJs

Например, у меня есть 3 флажков времени:

10:00 - 12:00 -- checkbox 
14:00 - 18:00 -- checkbox 
20:00 - 23:00 -- checkbox 

Если пользователь нажимает на 10:00 - 12:00 и 14:00 - 18:00 флажков, строка должна фильтруется на основе этих времен.

$scope.filterGrid = function(value) { 
    for (int i = 0; i <= $scope.gridApi.grid.columns[2].rows.entity.length(); i++) { 
     // I put one condition here as an example, but in my code all of the conditions 
     // are included 
     if ($scope.gridApi.grid.columns[2].rows.entity[i].time >= "14:00" && 
      $scope.gridApi.grid.columns[2].rows.entity[i].time <= "18:00") { 
       $scope.gridApi.grid.columns[2].filters[0]={term:value}; 
     } 
    } 
}; 

В моем коде, я могу получить то, что объект содержит в интервалах времени, но когда я добавить объекты в сетку, я только когда-либо получить последний добавленный объект. Например, если у меня есть 4 объекта, сетка всегда показывает 4-й объект.

Я думаю, что вместо добавления объектов я переписываю их. Как я могу решить эту проблему?

Благодарим за помощь.

+0

я думаю, что вы пытаетесь сравнить, если дата меньше или равна строке. afaik это невозможно –

+0

Я получаю данные, моя проблема в том, когда я связываю n объект с $ scope.gridApi.grid.columns [2] .filters [0] = {term: value}; сетка всегда показывает последний объект – MrMVC

+0

, можете ли вы попытаться использовать '$ scope.gridApi.grid.columns [2] .filters.add ({term: value});'? вы назначаете все элементы, соответствующие вашему if-предложению, первым в списке, поэтому всегда переопределяем предыдущее значение. Я бы предположил, что длина вашего списка равна 1. –

ответ

0

Вы должны изменить:

$scope.gridApi.grid.columns[2].filters[0]={term:value}; 

к:

$scope.gridApi.grid.columns[2].filters[i]={term:value};