在做表单验证的时候,需要一个功能,就是表单验证未成功的时候,保存按钮需要有一个类名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>
你给 button 一个 class,这样的话就算 button 看起来是 disabled,但实际上还是能用的啊!你还得写额外的逻辑来禁用这个 button,你不觉得很啰嗦么?
按照 HTML 规范,更合理的做法是使用
ng-disabled
,像 Bootstrap 这样的框架会直接捕捉 button 的 disabled 状态并给予对应的样式,这才是更合理的做法。你看一下这个例子好了:http://codepen.io/nightire/pen/pCikg