使用 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 代码和视图的控制器,这样我们可以检查哪里出了问题。
我有一个函数需要注入过滤器来过滤货币。 这是我的指示, 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 代码和视图的控制器,这样我们可以检查哪里出了问题。