Angularjs 为什么在以编程方式更改时ng模型未设置为未定义?
问题中的plunker示例:Angularjs 为什么在以编程方式更改时ng模型未设置为未定义?,angularjs,validation,Angularjs,Validation,问题中的plunker示例: 根据: 如果我们想以编程方式更改控件的DOM值,我们应该更新ngModel范围表达式。它的新值将由模型控制器获取,模型控制器将通过$formatters运行它,渲染它以更新DOM,最后对它调用$validate 因此,在plunker中,我通过“setNameToSomethingInvalid”将范围表达式更新为一个新值。其关联的ngModelController显然设置为无效,因此我希望以下内容适用: 如果有效性更改为无效,则模型将设置为未定义 相反,模型值设
根据: 如果我们想以编程方式更改控件的DOM值,我们应该更新ngModel范围表达式。它的新值将由模型控制器获取,模型控制器将通过$formatters运行它,渲染它以更新DOM,最后对它调用$validate 因此,在plunker中,我通过“setNameToSomethingInvalid”将范围表达式更新为一个新值。其关联的ngModelController显然设置为无效,因此我希望以下内容适用: 如果有效性更改为无效,则模型将设置为未定义 相反,模型值设置为无效字符串。我做错了什么 强制插入代码:
// 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">
//控制器定义
var vm=这个;
var initialName=“有效名称”;
vm.user={
姓名:姓名首字母
};
vm.setNameToSomethingInvalid=函数setNameToSomethingInvalid(){
vm.user.name=“not-a-valid-name”;
};
vm.resetName=函数resetName(){
vm.user.name=初始名称;
};
//html输入声明
Angular文档说:$modelValue*控件绑定到的模型中的值。我确实看到了,似乎不一致。但是,如果modelValue始终是解析的ng模型表达式,那么这是如何以编程方式更新dom的方法呢?我们的状态是无效的,这是不好的!Angular doc说:$modelValue*控件绑定到的模型中的值。我确实看到了,似乎不一致。但是,如果modelValue始终是解析的ng模型表达式,那么这是如何以编程方式更新dom的方法呢?我们的状态是无效的,这是不好的!