为什么在以编程方式更改时未将ng-model设置为undefined?

时间:2015-12-11 01:24:42

标签: angularjs validation

有问题的插件示例:
http://plnkr.co/edit/GgqA2gHYch1REj9BoHW3?p=preview

根据the documentation

  

如果我们想以编程方式更改控件的DOM值,我们应该更新ngModel范围表达式。它的新值将由模型控制器获取,它将通过$ formatters运行,$渲染它以更新DOM,最后在其上调用$ validate。

因此,在plunker中,我通过" setNameToSomethingInvalid'将范围表达式更新为新值。其关联的ngModelController显然设置为无效,因此我希望应用以下documentation

  

如果有效性更改为无效,则模型将设置为未定义

相反,模型值设置为无效字符串。我做错了什么?

强制性的掠夺者代码:

// controller definition
var vm = this;
var initialName = "a valid name";
vm.user = {
  name: initialName
};

vm.setNameToSomethingInvalid = function setNameToSomethingInvalid() {
  vm.user.name = "not-a-valid-name";
};

vm.resetName = function resetName() {
  vm.user.name = initialName;
};

// html input declaration
<input id="name"
  name="name"
  type="text"
  ng-pattern="/^[a-z ]+$/"
  ng-model="vm.user.name">

0 个答案:

没有答案