AngularJS在指令中自定义过滤器以格式化值

时间:2016-04-22 09:34:59

标签: javascript angularjs

我希望有一个指令来格式化它呈现的提供值,并且此格式化逻辑是该指令的一部分,而不依赖于HTML属性或父控制器。

我使用单个属性和标记的简化尝试看起来像这样,但会出现TypeError: definition.match is not a function错误。

app.directive('timeSpan', function() {
  scope: {
    value: '@value',
    displayValue: function(v) {
      return v / 1000.0;
    },
    displayUnits: function(v) {
      return 'seconds';
    },
    replace: true,
    template: '<span>{{value|displayValue}} {{value|displayUnits}}</span>'
  }
}

<time-span value="{{timer}}" />

1 个答案:

答案 0 :(得分:0)

我的解决方案是为您的指令创建一个控制器,并在该控制器内声明您的displayUnitsdisplayValue函数。

.directive('timeSpan', function() {
  return {
      scope: {
        value: '@value'
      },
      replace: true,
      template: '<span>{{displayValue(value)}} {{displayUnits(value)}}</span>',
      controller: 'TimeSpanCtrl',
  };
})
.controller('TimeSpanCtrl', ['$scope', function ($scope) {

    $scope.displayValue = function(v) {
      return v / 1000.0;
    };

    $scope.displayUnits = function(v) {
      return 'seconds';
    }
}]);

post

中的类似问题