0

我有一个可以获取表达式的自定义验证属性指令,例如:

<input type="text" uiSelectRequired="isParam == true"/>

假设我不能使用隔离范围,我如何在我的指令中评估这个表达式?

谢谢。

angular.module("app").directive('uiSelectRequired', function () {
        return {
            require: 'ngModel',
            link: function (scope, element, attr, ctrl) {
                ctrl.$validators.uiSelectRequired = function (modelValue, viewValue) {
                    var attrbs = attr;
                    var determineVal;
                    if (angular.isArray(modelValue)) {
                        determineVal = modelValue;
                    } else if (angular.isArray(viewValue)) {
                        determineVal = viewValue;
                    } else {
                        return false;
                    }
                    return determineVal.length > 0;
                };
            }
        };
    });
4

1 回答 1

1

用于attr.uiSelectRequired获取表达式,并使用$scope.$eval()对其进行评估。

请注意,您对该指令的使用是错误的。它应该是

<input type="text" ng-model="something" ui-select-required="isParam == true"/>

我也很确定您要使用 angular.isArray() 检查做什么。文本类型输入的视图值和模型值都是字符串。不是数组。

于 2016-03-06T16:34:41.990 回答