修复解除绑定后AngularJS中模型和视图之间的断开连接

修复解除绑定后AngularJS中模型和视图之间的断开连接,angularjs,angularjs-directive,Angularjs,Angularjs Directive,在stackoverflow社区的帮助下,我成功地将AngularJS的默认即时验证更改为onblur和onsubmit验证: 这对于验证部分很好,但我现在似乎遇到了一个问题,当我尝试在控制器中使用模型时,我的模型没有设置 此plunk有一个示例,我尝试记录user.mail的值: 我知道我可以在指令中做到这一点: scope.authenticate.userName = elm.val(); 问题是,这将使该指令仅对该元素可用,因为它将意味着对元素的modelname进行硬编码 有没有可

在stackoverflow社区的帮助下,我成功地将AngularJS的默认即时验证更改为onblur和onsubmit验证:

这对于验证部分很好,但我现在似乎遇到了一个问题,当我尝试在控制器中使用模型时,我的模型没有设置

此plunk有一个示例,我尝试记录user.mail的值:

我知道我可以在指令中做到这一点:

 scope.authenticate.userName = elm.val();
问题是,这将使该指令仅对该元素可用,因为它将意味着对元素的modelname进行硬编码


有没有可能以不同的方式设置模型的值,或者将modelname放入指令中,从而生成该变量?

您看到的问题是,您从未告诉过要保留的值是什么(请看下面的代码)

您要查看的是
$setViewValue
方法

我已经添加了一个div,它只是转储用户,所以您可以看到发生了什么

我对控制器所做的唯一更改是在
doValidation
功能中:

function dovalidation() {
  var email = elm.val();
  if (EMAIL_REGX.test(email)) {
    ctrl.$setViewValue(email);  // set the model to the right value
    ctrl.$setValidity('emails', true);
  } else {
    ctrl.$setViewValue(null);   // invalid, so set the model to null
    ctrl.$setValidity('emails', false);
  }
}

伟大的我知道必须有一个简单的方法,但就是不知道怎么做。幸好你能理解我有些混乱的描述:-)