давний наблюдатель, первый постер. Очень нравится сообщество, которое у вас есть здесь :)
Хорошо, сразу к проблеме. Цель — отфильтровать ng-repeat, передав фильтру 2 аргумента.
У меня есть вложенный ng-repeat, и во втором повторе мне нужно отфильтровать записи в зависимости от того, продолжительность их жизни в текущем месяце или нет.
Я делал это раньше с помощью ng-if, но, поскольку я использую разные CSS для нечетных и четных строк, это приводило к нежелательным результатам.
соответствующая часть HTML:
<div class="col-md-12" ng-repeat="month in monthTable">
<div class="col-md-12">
<h2>
<span>{{ month.start | amDateFormat:"MMMM" | uppercase}}</span>
</h2>
</div>
<div class="col-md-12">
<div ng-class-even="'calendar_row_even'" ng-class-odd="'calendar_row_odd'"
ng-repeat="bed in syncData.beds | filter: filterListItems(month, bed) |
orderBy:'timeFrom'">
// --> displays the unfiltered results for each month at the moment...
</div>
</div>
</div>
МесяцТаблица используется для определения начала и окончания месяца + для генерации имен является подходящей локалью, она заполняется следующим образом:
for ( var i = 0; i < 12; i++) {
$scope.monthTable.push({
start: new Date(Date.UTC($scope.currentYear, i, 1)).getTime(),
end: new Date(Date.UTC($scope.currentYear, i+1, 1)).getTime()
})
};
До сих пор довольно понятно.
Теперь вот функция, которая «должна выполнять» фильтрацию:
$scope.filterListItems = function (month, bed) {
console.log(month);
console.log(bed);
return true;
/*return (bed.timeFrom < month.end && bed.timeUntil >= month.start);
--> this should be the code.*/
};
Проблема в том, что я не могу заставить фильтр получать 2 аргумента. Если я пишу так:
"filter: filterListItems(month, bed)"
месяц проходит, но кровать не определена
Если я напишу так:
"filter: filterListItems:month:bed"
передается только кровать, но месяц не определен
Я понятия не имею, что я делаю неправильно, был бы очень признателен, если бы кто-нибудь мог указать мне правильное направление.