Использование фильтров в контроллере, а не в выражении

Я использую фильтр даты "Angular-UI" (Datepicker), в котором я могу фильтровать дату в формате дд-мм-гг. Ниже приведен код:

<input id="fromDate" name="fromDate" ng-click="open($event,'fromDate')" data-ng-model="filter.fromDate" datepicker-popup="{{format}}" is-open="datepickers.fromDate" datepicker-options="dateOptions" />
{{filter.fromDate|date:'dd-mm-yy'}}

Это просто, поскольку средство выбора даты теперь предоставляет мне дату в требуемом формате. Тем не менее, аналогичная вещь, если я пытаюсь сделать в контроллере, я не могу достичь.

var app = angular.module('myApp',['ui.bootstrap']); 
app.controller = ('myCtrl', function($scope, $filter) { 
$scope.filter.fromDate = ""; 
$scope.reqDate = ""; 
$scope.reqDate = $filter('$scope.filter.fromDate', date:'dd-mm-yy'); 
});

Кто-нибудь может мне помочь?

1 ответ

Прежде всего, фильтр даты не является частью Angular-UI. Это часть самого AngularJS.

Чтобы получить фильтр с именем date из кода, вы используете сервис $filter и передаете ему имя фильтра: 'date', Возвращает функцию фильтрации:

var dateFilter = $filter('date');

Эта функция принимает входные данные для фильтрации в качестве первого аргумента (то есть то, что вы ставите перед | в представлении) и дополнительные аргументы, если это необходимо (т.е. то, что вы ставите после : в представлении):

$scope.reqDate = dateFilter($scope.filter.fromDate, 'dd-MM-yy');

Все это, конечно, можно сделать одной строкой:

$scope.reqDate = $filter('date')($scope.filter.fromDate, 'dd-MM-yy');
Другие вопросы по тегам