我有以下指令
var notInModule = angular.module('ui.notIn', []);
notInModule.directive('notIn', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
var thisValue;
var otherValues;
attrs.$observe('notIn', function(values) {
otherValues = values;
validate();
});
ctrl.$parsers.unshift(function(viewValue) {
thisValue = viewValue.toLowerCase();
validate();
return thisValue;
});
var validate = function() {
ctrl.$setValidity('isWithin', otherValues.some(function(value) {
return value.toLowerCase() === thisValue.toLowerCase();
}));
};
},
};
});
我正在使用它
<input ng-model="sample.name" not-in={{sample}} required/>
示例是范围上的数组。但是,在指令的控制器中,它以字符串形式出现。
例如:if $scope.sample = ["a","b"]
,
在指令中,值为"["a","b"]"
答案 0 :(得分:0)
使用angular.fromJson进行转化:
attrs.$observe('notIn', function(values) {
otherValues = angular.fromJson(values);
validate();
});