我有一个指令,它为每个输入添加%。 我希望能够“必须”。 因此,如果仅存在%,则它将无效。 另外一个要求是,用户可以启用/禁用输入字段(使用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 + "%";
});
}
};
});
答案 0 :(得分:0)
我建议你使用设计而不是逻辑来解决这个问题。像这样:
其他方法是,如果viewvalue为false,则不添加百分比,因此一切正常
ngModelCtrl.$formatters.unshift(function(viewvalue) {
return viewvalue? viewvalue + "%" : '';
});