【发布时间】:2015-09-03 10:22:08
【问题描述】:
我有一个tags Angular 元素指令,它的操作与 Stack Overflow 自己的“标签”输入字段非常相似,用于此处的问题。
我想验证tag 元素上的ng-model 属性是一个包含至少一个标签且少于十个标签的数组。但是,我不想创建单独的指令来验证这一点,因为我永远不需要再次验证数组的长度。我希望逻辑自包含在元素指令中。
这是我目前所得到的:
angular.module("directives.tags", []).directive("tags", ["Tag", "$timeout", function(Tag, $timeout) {
return {
require: 'ngModel',
restrict: 'E',
scope: {
availableTags: '=',
selectedTags: '=ngModel',
placeholder: '@'
},
link: function($scope, element, attributes, ctrl) {
// Snip
ctrl.$validators.taglength = function(mv, vv) {
return (mv.length > 0);
}
}
}
我的指令是这样使用的:
<tags available-tags="data.tags" name="tags" ng-model="text.tags"></tags>
<span ng-show="writeForm.tags.$error.taglength">Invalid!</span>
但是,我的taglength 验证器不工作,或者我没有正确绑定它。有什么想法吗?
【问题讨论】:
-
您不应该在模板中使用
selected-tags="usedTagsArray"还是在指令范围中使用ngModel: '='? -
我对 Angular 的了解不够,无法回答这个问题。
-
有点!但是您的答案仍然没有完全起作用。函数
ctrl.$validators.ngModel仅在页面加载时被调用一次。模型更改时不会再次调用它。为什么? -
还有问题吗?
标签: javascript html angularjs validation