我有一个名为Config的常量,它包含一个task.minlength = 3属性.
我在$rootScope中追加常量:
.run(function($rootScope,Config) { $rootScope.Config = Config; })
在模板中,我想将Config.task.minlength值设置为输入的ng-minlength指令:
<input type="text" ng-model="newTask" placeholder="Write a new task..." required ng-minlength="{{ Config.task.minlength }}">
哪个根据DevTools正确解析:
但是,验证不会被触发:
$scope.form.$error['minlength'] // undefined
当我只写3而不是插入Config.task.minlength时,它工作正常.
ng-minlength的值是否必须硬编码?有没有解决方法?
ngModelController
不以任何方式0700或
$eval的值为
ngMinlength
,因此它只获取静态整数值.
我创建了自己的指令,使用$observe,
这是example:
app.directive('myMinlength',function(){ return { require: 'ngModel',link: function(scope,elm,attr,ngModel){ var minlength = 0; var minLengthValidator = function(value){ var validity = ngModel.$isEmpty(value) || value.length >= minlength; ngModel.$setValidity('minlength',validity); return validity ? value : undefined; }; attr.$observe('myMinlength',function(val){ minlength = parseInt(val,10); minLengthValidator(ngModel.$viewValue); }); ngModel.$parsers.push(minLengthValidator); ngModel.$formatters.push(minLengthValidator); } }; });
像这样使用它:
<input type="text" name="something" my-minlength="{{config.min}}" ng-model="something">