22

我正在阅读有关指令的 Angular 文档:http: //docs.angularjs.org/guide/directive

页面上的示例之一(此处为完整工作示例http://jsbin.com/osOQOYag/3/edit?html,js,output

angular.module('docsTimeDirective', [])
  .controller('Ctrl2', function($scope) {
    $scope.format = 'M/d/yy h:mm:ss a';
  })
  .directive('myCurrentTime', function($interval, dateFilter) {

    function link(scope, element, attrs) {
      var format,
          timeoutId;

      function updateTime() {
        element.text(dateFilter(new Date(), format));
      }

      scope.$watch(attrs.myCurrentTime, function(value) {
        format = value;
        updateTime();
      });

      element.on('$destroy', function() {
        $interval.cancel(timeoutId);
      });

      // start the UI update process; save the timeoutId for canceling
      timeoutId = $interval(function() {
        updateTime(); // update DOM
      }, 1000);
    }

    return {
      link: link
    };
  });

在线上:

.directive('myCurrentTime', function($interval, dateFilter) {

我一辈子都找不到关于 .directive 原型的任何信息,也无法在任何地方找到关于 dateFilter 的任何文档。另外,我知道 dateFilter 可以在 AngularJS 的未缩小版本中找到(尽管该名称在缩小版本中消失了)。谁能提供一些指导(可能还有链接)来解释有关 dateFilter 和类似功能的更多信息?

4

1 回答 1

28

日期过滤器文档在这里:http ://code.angularjs.org/1.2.5/docs/api/ng.filter:date

这是解释过滤器注入的文档的一部分:http: //code.angularjs.org/1.2.5/docs/guide/filter#using-filters-in-controllers-and-services

过滤器通常用于视图表达式 ( {{myDate | date:'short'}}),但它们也可以在您的 JS 代码中使用。通过将字符串附加Filter到过滤器名称(例如date-> dateFilter)来注入过滤器。

app.controller('MyCtrl', function($scope, dateFilter, lowercaseFilter){
  $scope.myDate = new Date();
  $scope.myDateFormatted = dateFilter($scope.myDate, 'shortDate');

  $scope.myString = 'Some String';
  $scope.myStringLowerCased = lowercaseFilter($scope.myString);
});

PLUNKER

于 2013-12-26T17:48:25.880 回答