使用angularjs应用货币过滤器并在函数中注入$ filter

时间:2016-03-04 07:46:12

标签: angularjs angularjs-directive angularjs-filter

我有一个功能,我需要注入过滤器来过滤货币。 这是我的指示, module.exports = prAmountAutoCorrectingField;

function prAmountAutoCorrectingField($filter) {
    return {
        require: '?ngModel',
        restrict: 'A',
        link: link
    }

;

function link(scope, elm, attrs, ctrls) {
    if (!ctrls) return;
        ctrls.$formatters.unshift(function (a) {
            return $filter(attrs.format)(ctrls.$modelValue)
        });
        ctrls.$parsers.unshift(function (viewValue) {
            var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, '');
            elm.val($filter(attrs.format)(plainNumber));
            return plainNumber;
        });
}
}

HTML代码

我收到错误错误:

  

[$ injector:unpr]未知提供者:undefinedFilterProvider< -   undefinedFilter。

我需要有关如何在此处注入过滤器的帮助,以便它可以正常工作。

1 个答案:

答案 0 :(得分:0)

这就是说attrs.format是未定义的。所以这意味着你试图直接将过滤器的名称传递给你的指令。

我认为这不是一个好主意。最好是使用一个自定义过滤器来获取2个参数,数据格式和货币。

如果你想保持attrs.format方式,请链接你的HTML代码和视图的控制器,这样我们就可以检查出了什么问题。