AngularJS格式化 - 如何显示空白,而不是零(AngularJS formatter - h

2019-10-20 20:28发布

请参阅此前面的问题: 在Angularjs格式输入值

我遇到的问题是,(这是在回答上面的问题,即在小提琴的情况下http://jsfiddle.net/SAWsA/811/ ),打在剩余的输入导致单号退格出现而不是清除输入零。

小提琴指令代码:

fessmodule.directive('format', ['$filter', function ($filter) {
    return {
        require: '?ngModel',
        link: function (scope, elem, attrs, ctrl) {
            if (!ctrl) return;


            ctrl.$formatters.unshift(function (a) {
                return $filter(attrs.format)(ctrl.$modelValue)
            });


            ctrl.$parsers.unshift(function (viewValue) {
                var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, '');
                elem.val($filter('number')(plainNumber));
                return plainNumber;
            });
        }
    };
}]); 

我希望如何改变指令的小提琴任何建议,使您不必打两次退格键清除输入。

Answer 1:

你可以简单地把一个if-else条件,以您的指令,它完成...

        ctrl.$parsers.unshift(function (viewValue) {
            console.log(viewValue);
            if(viewValue){
                var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, '');
                elem.val($filter('number')(plainNumber));
                return plainNumber;
            }else{
                return '';
            }
        });

这里是工作的jsfiddle



文章来源: AngularJS formatter - how to display blank instead of zero