AngularJS:指令模板内的自定义过滤器

AngularJS:指令模板内的自定义过滤器,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我正在尝试创建一个指令,在该指令中,我需要根据一个过滤器格式化一个值,该过滤器可能会根据字段的不同而变化,它可能是数字:2,日期。。。或者别的什么 因此,我想在标记中使用指令时定义过滤器。 场景通过此plunker进行描述: 到目前为止,未应用筛选器或出现错误 正确的实施方法是什么? Thanx有一种使用模板的方法:functionelem,attrs 这是一个工作的PRUNKR: 有两个示例,一个将其格式化为浮点,另一个假定将其格式化为日期。格式化本身我没有做,因为它相当琐碎。Thanx,到目

我正在尝试创建一个指令,在该指令中,我需要根据一个过滤器格式化一个值,该过滤器可能会根据字段的不同而变化,它可能是数字:2,日期。。。或者别的什么

因此,我想在标记中使用指令时定义过滤器。 场景通过此plunker进行描述:

到目前为止,未应用筛选器或出现错误

正确的实施方法是什么?
Thanx有一种使用模板的方法:functionelem,attrs


这是一个工作的PRUNKR:


有两个示例,一个将其格式化为浮点,另一个假定将其格式化为日期。格式化本身我没有做,因为它相当琐碎。

Thanx,到目前为止,这是我见过的最好的解决方案。Thanx。这可能是第二种解决方案,但到目前为止,我发现charlietfl的上一个答案更清晰、更简单。我认为我的解决方案更清晰,因为它不涉及在模板中连接字符串。此外,我的解决方案适用于可以传递到过滤器的复杂对象。我同意你的观点,但我不喜欢你的示例切换过滤器类型的方式。你可以查看我编辑的解决方案,它甚至更短:@MatteoPiazza,你不需要使用我的过滤器切换示例。只需修改一行代码,就可以轻松地使用内置的角度过滤器。只需添加两三行代码,就可以使用自定义过滤器和角度内置过滤器。不过,我想说的是,将过滤器定义连接到模板中很奇怪。你可以用更干净的方式来做。
app.directive('editableField', function() {
    return {
        restrict: 'A',
        replace: true,
      template:function(elem,attrs) {

        return '<div>' +
            '<input ng-model="editableModel" />' +
            '<div class="output">{{editableModel|'+attrs.editableFilter+' }}</div>' +
             '</div>';
      },

     /* if using in a form....I would remove the isolated scope*/
       scope: {
          editableModel: '='
      },
      controller: function($scope) {},
      link: function($scope, $element, $attrs, $filter) {
        var input = $element.find('input');
        input.bind('click', function () {
            this.select();
        });
      }
    };
});