Я хочу передать два аргумента в пользовательский фильтр " from" и "to" в пользовательский фильтр, который я создал в моем контроллере.
Здесь вы можете увидеть мой собственный фильтр, который я создал:
vm.filterMinutes = function (prop, from, to) {
return function (item) {
return item[prop] >= from && item[prop] <= to;
};
};
И вид выглядит так:
<label>Search from: <input ng-model="fromMinutes"></label>
<label>Search from: <input ng-model="toMinutes"></label>
<tr style="cursor: pointer;" ng-repeat="student in AdminReportsWorksnaps.data | filter: AdminReportsWorksnaps.filterMinutes('totalMinutes', fromMinutes,toMinutes)">
<td>{{ student.studentId }}</td>
<td>{{ student.firstName }}</td>
<td>{{ student.lastName }}</td>
<td>{{ student.municipality }}</td>
<td class="total success">{{ student.totalMinutes | number}}</td>
</tr>
По какой-то причине это не работает. Ну, если я filter: AdminReportsWorksnaps.filterMinutes('totalMinutes', 5000,6000)"
фильтр следующим образом: filter: AdminReportsWorksnaps.filterMinutes('totalMinutes', 5000,6000)"
он отлично работает. Я просто не вижу, как я могу передать входные значения из текстовых полей.
благодаря
Передайте его как :
разделенный (предположим, что вы используете шаблон controllerAs
с псевдонимом vm
)
ng-repeat="student in AdminReportsWorksnaps.data | filter: AdminReportsWorksnaps.filterMinutes: 'totalMinutes': fromMinutes: toMinutes"
Таким образом, в приведенном выше случае вам нужно ожидать 4 параметра в фильтре, AdminReportsWorksnaps.data
параметром будет AdminReportsWorksnaps.data
, второй будет totalMinutes
, 3rd fromMinutes
& last будет значением toMinutes
vm.filterMinutes = function (collection, prop, from, to) {
//collection would have
console.log("AdminReportsWorksnaps.data", collection)
console.log(prop, from, to);
return (collection || []).filter(function (item) {
return item[prop] >= from && item[prop] <= to;
});
};
Похоже, вы используете controllerAs
Так почему бы и не использовать псевдоним контроллера для моделей:
<label>Search from: <input ng-model="AdminReportsWorksnaps.fromMinutes"></label>
<label>Search from: <input ng-model="AdminReportsWorksnaps.toMinutes"></label>
<tr style="cursor: pointer;" ng-repeat="student in AdminReportsWorksnaps.data | filter: AdminReportsWorksnaps.filterMinutes('totalMinutes', AdminReportsWorksnaps.fromMinutes, AdminReportsWorksnaps.toMinutes)">
<td>{{ student.studentId }}</td>
<td>{{ student.firstName }}</td>
<td>{{ student.lastName }}</td>
<td>{{ student.municipality }}</td>
<td class="total success">{{ student.totalMinutes | number}}</td>
Это должно сработать так.
AdminReportsWorksnaps
?