Angular指令将ngmodel值更改为undefined

时间:2015-01-28 10:11:10

标签: javascript html angularjs

我正在使用此表格

<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

但它不起作用 - 只能轮流使用。

1 个答案:

答案 0 :(得分:0)

您的验证器需要为要设置的值返回true,否则它将是未定义的

  

如果有效性更改为无效,则模型将设置为undefined,除非ngModelOptions.allowInvalid为true。如果有效性更改为有效,则会将模型设置为最后一个可用的有效modelValue,即最后一个已解析的值或从范围设置的最后一个值。

ctrl.$validators.validators = function(modelValue, viewValue) {
    return modelValue !== '';
};