Использование фильтров в контроллере, а не в выражении
Я использую фильтр даты "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');