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

Apply currency filter using angularjs and injecting $filter in function

我有一个函数需要注入过滤器来过滤货币。 这是我的指示, 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] Unknown provider: undefinedFilterProvider <- undefinedFilter.

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

这表示 attrs.format 未定义。所以这意味着您正试图将过滤器的名称直接传递给您的指令。

我认为这不是个好主意。最好有一个带有 2 个参数的自定义过滤器,即要格式化的数据和货币。

如果你想保持 attrs.format 方式,link 你的 HTML 代码和视图的控制器,这样我们可以检查哪里出了问题。