制定一个最小长度的指令" required"

时间:2014-06-18 12:48:19

标签: angularjs

我有一个指令,它为每个输入添加%。 我希望能够“必须”。 因此,如果仅存在%,则它将无效。  另外一个要求是,用户可以启用/禁用输入字段(使用ngDisabled)。当它被禁用时,我不需要将其设为“必需”。

我试图设置ngMinLength = 1,但是它没有显示我想要的%,何时 输入为空,因为它无效。 我该怎么办?

http://jsfiddle.net/jivangilad/uZvn3/

<input valid-num type="text"  ng-model="deal.cupon">

var portaldirectives = angular.module("portaldirectives", []);



portaldirectives.directive("validNum", function($filter) {
    return {
        restrict: 'A',
        require: '?ngModel',
        priority: 1,
        link: function(scope, element, attr, ngModelCtrl) {

            ngModelCtrl.$parsers.unshift(function(val) {

                if (val === undefined)
                    val = "";
                var formatedStr = val;
                if (val.indexOf("%") == -1)
                    formatedStr = val + "%";
                if (formatedStr !== val) {
                    ngModelCtrl.$setViewValue(formatedStr);
                    ngModelCtrl.$render();
                }

                var num = formatedStr.toString().replace(/\,/g, '').replace('%', '');
                return num;
            });

            ngModelCtrl.$formatters.unshift(function(viewvalue) {
                return viewvalue + "%";

            });

        }
    };
});

1 个答案:

答案 0 :(得分:0)

我建议你使用设计而不是逻辑来解决这个问题。像这样: enter image description here

其他方法是,如果viewvalue为false,则不添加百分比,因此一切正常

ngModelCtrl.$formatters.unshift(function(viewvalue) {
    return viewvalue? viewvalue + "%" : '';
});