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

时间:2013-10-29 14:58:00

标签: angularjs angularjs-directive

我正在尝试创建一个指令,我需要根据可能不同的过滤器格式化值(取决于字段,它可能是"数字:2"," date& #34; ......或其他)。

所以我想在标记中使用指令时定义过滤器。 通过此plunker描绘了场景:http://embed.plnkr.co/N2zKITFpUQMxmylAAGlt/preview

到目前为止,未应用过滤器或引发错误。

实施它的正确方法是什么? 感谢名单

2 个答案:

答案 0 :(得分:3)

以下是使用template:function(elem,attrs)

执行此操作的一种方法
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();
        });
      }
    };
});

DEMO

答案 1 :(得分:3)

这是一个有效的Plunkr:

http://plnkr.co/edit/nZgah7PtGRVMWBgKu7V8?p=preview

有两个例子,一个将其格式化为浮点数,另一个可以将其格式化为日期。格式本身我没有做,因为它是相当微不足道的。