有问题的插件示例:
http://plnkr.co/edit/GgqA2gHYch1REj9BoHW3?p=preview
如果我们想以编程方式更改控件的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">