Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当$validators返回false时,使用ng模型选项删除范围变量_Javascript_Angularjs - Fatal编程技术网

Javascript 当$validators返回false时,使用ng模型选项删除范围变量

Javascript 当$validators返回false时,使用ng模型选项删除范围变量,javascript,angularjs,Javascript,Angularjs,这就是我的问题所在。 这很简单。。。似乎angular遇到了一个问题 说明: 我使用的是ng模型选项,因此只有在输入上出现模糊事件时,才能更新模型 <input type="text" ng-model="myText" ng-model-options="{ updateOn : 'blur' }"> 指令 .directive('checkErrors', function(){ return { require : 'ngModel', link :

这就是我的问题所在。
这很简单。。。似乎angular遇到了一个问题

说明:

我使用的是ng模型选项,因此只有在输入上出现模糊事件时,才能更新模型

<input type="text" ng-model="myText" ng-model-options="{ updateOn : 'blur' }">
指令

.directive('checkErrors', function(){

  return {

    require : 'ngModel',
    link : function(){

          ngModel.$validators.validHour = function(modelValue){
                return true;
          };
    }
  };

});
要查看问题,请更改
并返回true
to
返回false更改输入并创建模糊事件

编辑
新Plunker:


我认为应该在ng repeat中触发问题,但事实并非如此。

在Angularjs中,这似乎是正确的行为,这意味着您希望做什么

这里有一些选择

通过向选项中添加allowInvalid:true,将显示正在呈现的文本,但随后将否定验证

查看更新的plunker

更新

试图在Angular代码库中找到$Validator,这可能与正确的行为有关

看起来ctrl.$modalValue只有在模型通过验证或未定义时才被设置为更新,这就是您的

        <pre> {{ appCtrl.test }} </pre>
{{appCtrl.test}

正在你身上消失。没有可显示的值。

用于创建链接,并向您表示感谢。该问题已编辑,其中包含链接。用小提琴很容易理解。真的不知道为什么。如果使用像
type=“email”
这样的内置验证器,则执行相同的操作。我刚刚进行了另一次编辑。如果我删除我的验证器,将会有一个type=“email”。。。好的,谢谢你。我认为默认值应该是
true
ng-model-options="{ updateOn : 'blur', allowInvalid: true }"
ctrl.$$runValidators(modelValue, viewValue, function(allValid) {
  // If there was no change in validity, don't update the model
  // This prevents changing an invalid modelValue to undefined
  if (!allowInvalid && prevValid !== allValid) {
    // Note: Don't check ctrl.$valid here, as we could have
    // external validators (e.g. calculated on the server),
    // that just call $setValidity and need the model value
    // to calculate their validity.
    ctrl.$modelValue = allValid ? modelValue : undefined;
        <pre> {{ appCtrl.test }} </pre>