@kowkin
Фотографирую, а в свободное время пишу сайты.

Как использовать как фильтр для ng-repeat в AngularJs?

Есть <input type="date">, под ним табличка с ng-repeat? По-умолчанию в ng-repeat отображаются элементы с сегодняшней датой. А нужно что бы после изменения даты в инпуту менялось содержимое в ng-reapeat (с датой из инпута).

update:

Попытался сделать таким образом:
в хтмл
<input type="date" ng-model="bd" />
  <button ng-click='changeDate()'>Ok</button>

в контроллере
$scope.changeDate = function() {
     var changedDate = $scope.bd;
     $http.get("/api/meals/" + changedDate)
          .success(function(data) {
              self.updateMeals(data);
              console.log($scope.bd);
            })
          .error(function(){
            console.log('Error get Meals')
          });
   };


но беда в том что из инпута дата уходит в таком формате:
"Thu%20Feb%2018%202016%2000:00:00%20GMT+0200%20(EET)"
а нужно в таком:
"2015-1-1"
  • Вопрос задан
  • 554 просмотра
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
не используйте фильтры с ngRepeat. Вот и вся наука.

По изменению сегодняшней даты (например при помощи ngChange или других колбэков вашей диреткивы датапикера) просто вызываем метод контроллера который будет формировать новую коллекцию. И все.

p.s. никаких $scope.$watch! и вообще не используйте $scope нигде кроме как в link директивы, который вам так же редко когда должен быть нужен. Y031
Ответ написан
dunmaksim
@dunmaksim
Технический писатель
ng-repeat работает с набором данных. Опишите в контроллере метод, который фильтрует основной набор в зависимости от значения в input'е. Для этого можно использовать $scope.$watch.
Ответ написан
Комментировать
@nk_pl
<input type="text" ng-model="date">
<table>
  	<tr ng-repeat="post in posts | filter:date">
  		<td>{{post.text}}</td>
  		<td>{{post.date}}</td>
  	</tr>
</table>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы