【问题标题】:Using filters in Controller instead of in Expression在控制器中使用过滤器而不是在表达式中
【发布时间】:2016-02-19 20:37:21
【问题描述】:

我正在使用“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'}}

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

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

有人可以帮帮我吗?

【问题讨论】:

  • $scope.filter.fromDate 需要是 Date 对象才能将其格式化为日期,而不是空字符串 $scope.filter.fromDate = ""

标签: angularjs filter controller angular-ui


【解决方案1】:

首先,日期过滤器不是 Angular-UI 的一部分。它是 AngularJS 本身的一部分。

要从代码中获取名为“日期”的过滤器,您可以使用 $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');

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多