Динамический фильтр в 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, время: 03:22. |