angularjs - 在验证器指令中计算表达式
angularjs - evaluate Expression inside validator directive
我有一个可以获取表达式的自定义验证属性指令,例如:
<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;
};
}
};
});
使用attr.uiSelectRequired
获取表达式,使用$scope.$eval()求值
请注意,您对指令的使用是错误的。应该是
<input type="text" ng-model="something" ui-select-required="isParam == true"/>
我也知道你想用 angular.isArray() 检查做什么。文本类型输入的视图值和模型值都是字符串。不是数组。
我有一个可以获取表达式的自定义验证属性指令,例如:
<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;
};
}
};
});
使用attr.uiSelectRequired
获取表达式,使用$scope.$eval()求值
请注意,您对指令的使用是错误的。应该是
<input type="text" ng-model="something" ui-select-required="isParam == true"/>
我也知道你想用 angular.isArray() 检查做什么。文本类型输入的视图值和模型值都是字符串。不是数组。