Mat*_*hyn 9 javascript forms angularjs
我使用AngularJS 1.5.8在我的应用程序中有一个奇怪的行为:
plunker(https://plnkr.co/edit/zaHVJeK8hdxk2gaOL9Pf?p=preview)和视频(http://recordit.co/eszvfdfC9S)
ng-required不调用ng-change函数inputAND 之后(删除它们input)是ng-requiredDOES调用ng-change功能预期的行为?
inputAND 之后(删除它们input)ng-required不应该调用ng-change函数.就像它在开始时一样,并且当输入具有某些价值时如果这是一个错误,请告诉我.如果没有那么为什么不总是甚至根本不换ng-required电话ng-change?
ANSWER FOUND ----------------------------------------------- -------------------------------------------------- ------
NgModelController有两个属性:$ viewValue(用户输入的值)和$ modelValue(绑定到模型的值).当用户输入的值未通过验证时,NgModelController将模型设置为undefined.
在AngularJS 1.3中,他们添加了ng-model-options指令.它允许您配置模型更新的方式/时间.您可以使用allowInvalid选项来防止将模型设置为undefined:
ng-model-options="{allowInvalid: true}"
Run Code Online (Sandbox Code Playgroud)
小智 7
您应该添加
ng-model-options="{allowInvalid: true}"
Run Code Online (Sandbox Code Playgroud)
所以最终结果将是
<input type="text"
ng-change="$ctrl.onChange()"
ng-required="$ctrl.isRequired"
ng-model-options="{allowInvalid: true}"
ng-model="$ctrl.val"
/>
Run Code Online (Sandbox Code Playgroud)