2016-10-09 5 views
1

Помогите исправить сценарий.angularjs: Почему фильтр не работает?

HTML:

  <li ng-repeat="date in dateArr | dateFormatter}"> 
       <span class="date">{{date}}</span> 
      </li> 

JS:

angular.module('App', []) 
    .controller('lsController', function ($scope) { 
     $scope.dateArr = [ 
      '10.10.2016', 
      '11.10.2016', 
      '12.10.2016', 
      '13.10.2016', 
      '14.10.2016', 
      '15.10.2016' 
     ]; 

     /*$scope.dateFormatter = function(date) { 
      return date.slice(0, 6);    
     }*/  
    }) 
    .filter('dateFormatter', function (date) { 
     return date.slice(0, 6); 
    });  

Я использую угловые 1.4.8

JSFIDDLE

мне нужно использовать фильтр, который разрезать DateString

ответ

2

Ваш фильтр не сконструирован должным образом.

Фильтр должен возвращать функцию, которая содержит аргументы для фильтрации и возвращает результат

.filter('dateFormatter', function() { 
     return function(dateString){ 
     return dateString.slice(0, 6); 
     } 
}); 

Тогда у вас есть этот набор для фильтрации в нг-повторе, но положить его там нужно будет вернуться фильтрованный массив, а не ввод строки и манипуляции. Таким образом, он должен быть помещен, где вы передаете в строке

<li ng-repeat="date in dateArr"> 
     <span class="date">{{date | dateFormatter}}</span> 
</li> 

DEMO

0

Ваш фильтр неправильно. Проверьте фильтр де documentation для более подробной информации

.filter('dateFormatter', function() { 
    return function(date){ 
     return date.slice(0, 6) 
    } 
}); 

Кроме того, как вы используете ваш фильтр неправильно. Возьмите его из ng-repeat

<span class="date">{{date | dateFormatter }}</span> 

FIDDLE

Смежные вопросы