在使用angular.js(版本1.4.6)时,以下代码在渲染时出现异常:
<input type='checkbox' ng-model='cbValue'
ng-true-value="{{someText}}" ng-false-value="BUMMER">
Checkbox Value:{{cbValue}}
异常信息片段截取:
angular.js:12450Error: [ngModel:constexpr] http://errors.angularjs.org/1.4.6/ngModel/constexpr?p0=ngFalseValue&p1=BUMMER
at Error (native)
at http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js:6:416
at Hd (http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js:166:318)
at Rd.checkbox (http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js:248:283)
at link.pre (http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js:249:255)
at $ (http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js:73:89)
at K (http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js:61:354)
at h (http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js:54:410)
at K (http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js:61:487)
at h (http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js:54:410) <input type="checkbox" ng-model="cbValue" ng-true-value="{{someText}}" ng-false-value="BUMMER" class="ng-pristine ng-untouched ng-valid">
查看文档之后,发现自从1.3版本以后,对input[checkbox]标签的ng-true-value,ng-false-value指令不支持动态表达式,仅能使用常量,以下改写之后生效:
<input type='checkbox' ng-model='cbValue'
ng-true-value="'PERFECT'" ng-false-value="'BUMMER'">
Checkbox Value:{{cbValue}}
对checkbox的值检测或绑定最好在Controller里写,在标签中使用指令比较不方便。