#angularjs
#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);
});
Я использую angular 1.4.8
Мне нужно использовать фильтр, который обрезает строку данных
Ответ №1:
Ваш фильтр сконструирован неправильно.
Фильтр должен возвращать функцию, которая содержит аргументы для фильтрации и возвращает результат
.filter('dateFormatter', function () {
return function(dateString){
return dateString.slice(0, 6);
}
});
Тогда у вас есть этот набор для фильтрации в ng-repeat, но, поместив его туда, нужно будет вернуть отфильтрованный массив, а не ввод строки и манипуляции. Поэтому его нужно поместить туда, куда вы передаете строку
<li ng-repeat="date in dateArr">
<span class="date">{{date | dateFormatter}}</span>
</li>
Ответ №2:
Ваш фильтр неверен. Проверьте документацию de filter для получения более подробной информации
.filter('dateFormatter', function () {
return function(date){
return date.slice(0, 6)
}
});
Кроме того, неправильным является то, как вы используете свой фильтр. Выньте его из ng-repeat
<span class="date">{{date | dateFormatter }}</span>