将变量传递给组件视图以用作过滤器

时间:2017-06-24 11:04:48

标签: angularjs

我构建了一个允许将过滤器作为参数传递的简单组件,并且我尝试在组件视图中使用该参数,但我不知道如何操作。它作为字符串传递,因此在组件视图中被视为字符串,因此无法正常工作。

基本上它看起来像这样:

<number-compare value="some.value" filter="currency"/>

在组件视图中:

<span> {{ numCompCtrl.value | numCompCtrl.value.filter }} </span>

但这不起作用,因为它被解释为{{ 10 | "currency" }}

我试图在控制器中处理它,并在那里应用过滤器,但是当过滤器需要多个参数时它会变得非常混乱,所以到目前为止最简单的方法就是如果我可以使用简单的方法。

有可能吗?

1 个答案:

答案 0 :(得分:0)

实际上,我刚刚发现我之前使用另一个过滤器作为解决方法解决了这个问题

(function() {
  'use strict';

  angular
    .module('core')
    .filter('dynamic', dynamic);

  dynamic.$inject = ['$interpolate'];

  function dynamic($interpolate) {
    return function(value, name) {
      if (!name) {
        return value;
      }

      var result = $interpolate('{{ value | ' + name + ' }}');
      return result({ value: value });
    };
  }
})();

并像这样使用:

{{ numCompCtrl.value | dynamic: numCompCtrl.value.filter }}