angular 中ng-class,当$invalid变化时,类名没有变化
在做表单验证的时候,需要一个功能,就是表单验证未成功的时候,保存按钮需要有一个类名disabled,所以很自然的想到ng-class={disabled:myForm.$invalid}这样去绑定类名,
但是渲染视图的时候,通过chrome的angular插件,已经看到$invalid的值为false,可是disabled类名还是存在...
想来是因为input等元素的value值一开始都是空的,所以$invalid是true,添加了disabled类名,但是当视图渲染完毕,input的value值都被替换成模型数据后,ng-class并没有检测到他的变化... 请问这种情况怎么处理,谢谢~~~
(通过$invalid来拼接class可以成功,但就是想知道怎么用ng-class来实现)
原代码是这样的:
<a class="edit" ng-click="save(myForm.$invalid)" ng-class="{disabled:myForm.$invalid}">保存</a>
渲染后得到的结果是这样的:
<a class="edit disabled" ng-click="save(myForm.$invalid)" ng-class="{disabled:myForm.$invalid}" href="">保存</a>
前端 ng-class angularjs JavaScript
Answers
关于AngularJS的表单验证,可以参考下:
http://www.ngnice.com/showcase/#/form/basic
如果不想使用原生的方式编写错误信息提示模板,参考我写的w5cVlidator插件:
http://www.ngnice.com/posts/236860ed32d3e8
你给 button 一个 class ,这样的话就算 button 看起来是 disabled ,但实际上还是能用的啊!你还得写而外的逻辑来禁用这个 button ,你不觉得很啰嗦么?
按照 HTML 规范,更合理的做法是使用
ng-disabled
,像 Bootstrap 这样的框架会直接捕捉
button
的
disabled
状态并给予对应的样式,这才是更合理的做法。
你看一下这个例子好了: http://codepen.io/nightire/pen/pCikg