我正在使用此表格
<div ng-controller="TestController">
<form ng-submit="saveForm()">
<input type="text" name="test" ng-model="testData" test="{{testValue}}"/>
<input type="submit" value="Save"/>
</form>
</div>
和这个角度代码:
app.controller('TestController', [ '$scope', function($scope) {
$scope.testData="testValue";
$scope.saveForm = function(){
console.log($scope.testData);
}
}]);
app.directive('test', function($parse) {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.validators = function(modelValue, viewValue) {
};
}
};
});
在更改输入值并单击“保存”后,我在$ scope.testData中获取了未定义的值。为什么以及如何避免这种情况?
我试图添加:
scope.testData = viewValue;
内部功能:
ctrl.$validators.validators
但它不起作用 - 只能轮流使用。
答案 0 :(得分:0)
您的验证器需要为要设置的值返回true,否则它将是未定义的
如果有效性更改为无效,则模型将设置为undefined,除非ngModelOptions.allowInvalid为true。如果有效性更改为有效,则会将模型设置为最后一个可用的有效modelValue,即最后一个已解析的值或从范围设置的最后一个值。
ctrl.$validators.validators = function(modelValue, viewValue) {
return modelValue !== '';
};