Динамический фильтр в ng-repeat
Здравствуйте, мой код:
<div class="Tasks" data-ng-init="init()">
<div>
<i id="{{y.TaskId}}" ng-repeat="y in Tasks" ng-click="OpenTask($event)" class="iTask">
<div>{{y.Title}}</div><br />
<div class="d-disc">{{y.Description}}</div>
<div class="d-date">
<b>Дата:</b> {{y.TaskTerm.substr(0, 10)}}
</div>
<div class="d-status"><b>Cтатус:</b> {{y.StatusString}}</div>
<div class="d-tags"><b>Теги:</b> {{y.Tags}} </div>
</i>
</div>
по data-ng-init="init()", при загрузки страницы у меня приходят не фильтрованные данные, так и должно и есть
$scope.init = function () {
TService.GetTasks().then(function(d) {
$scope.Tasks = d.data;
}, function() {
alert("Fail of deleting task");
});
}
по клику на кнопку "фильтровать", динамически данные в ng-repeat должны отфильтровываться, но как это сделать я не пойму <span id="55" ng-click="filterBy($event)" >фильтровать</span> Возможно можно как-то вложить $scope после ng-repeat типа:
<i id="{{y.TaskId}}" ng-repeat="y in Tasks {{filter}}
а я по клику в функции бы присваивал значения
$scope.filterBy = function (obj) {
$scope.filter = "filter:{ Tegs : 'расходы'}";
}
Помогите пожалуйста |
1. у ng-repeat есть orderBy функциональность. Почитай тут https://docs.angularjs.org/api/ng/filter/orderBy. В этом же документе посмотри первый пример в Plunker (вот он http://plnkr.co/edit/yKCrobzz8DJirFImgJtL?p=preview).
В целом ты можешь использовать этот же подход ng-repeat="y in Tasks | orderBy: predicate", где predicate поначалу пустая строка (в этом случае данные будут выводиться в порядке как есть). Соответственно в твоем методе ng-click="filterBy($event)" ты будешь делать что-то вроде $scope.predicate = '/*название поля для фильтрации*/'. Обрати также внимание что orderBy принимает не только строку-свойство объекта но также и функцию. |
| Часовой пояс GMT +3, время: 00:13. |