在Controller中使用过滤器而不是在Expression中

时间:2015-11-18 07:56:29

标签: angularjs filter controller angular-ui

我正在使用'Angular-UI'(Datepicker)的日期过滤器,我可以用dd-mm-yy格式过滤日期。以下是代码:

<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'}}

这是很常见的,因为datepicker现在以所需的格式提供日期。但是,如果我尝试在控制器中做类似的事情,我无法实现。

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 个答案:

答案 0 :(得分: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');