将数组传递给angularjs中的自定义指令

时间:2014-04-30 07:55:45

标签: angularjs angularjs-directive

我有以下指令

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"]"

1 个答案:

答案 0 :(得分:0)

使用angular.fromJson进行转化:

attrs.$observe('notIn', function(values) {
    otherValues = angular.fromJson(values);
    validate();
});