我正在使用一个指令来验证angularjs(版本1.0.2)中的两个表单字段(日期)。为了验证表单,我使用以下指令。
http://jsfiddle.net/cafau/Ja2ar/
我做的唯一改变是将指令重命名为ui-validate。
我已经创造了一个小提琴
http://jsfiddle.net/sidkurias/xXf6b/
我已经包含了我正在使用的部分html和控制器的相关部分。
控制器有两个方法validStartDate和startBeforeEnd,我想从指令调用它。当我这样做时,我收到以下错误
Error: Syntax Error: Token '{' is unexpected, expecting [)] at column 13 of the expression [(function (){
var sdate = new Date($scope.avail.sdate),
today = new Date(getDefaultDates(0));
return sdate >= today ;
}) && true] starting at [{
var sdate = new Date($scope.avail.sdate),
today = new Date(getDefaultDates(0));
return sdate >= today ;
}) && true].at Error (<anonymous>)
at throwError (http://g.dev/app/lib/angular/angular.js:5867:11)
at consume (http://g.dev/app/lib/angular/angular.js:5905:7)
at primary (http://g.dev/app/lib/angular/angular.js:6075:7)
at unary (http://g.dev/app/lib/angular/angular.js:6066:14)
at multiplicative (http://g.dev/app/lib/angular/angular.js:6049:16)
at additive (http://g.dev/app/lib/angular/angular.js:6040:16)
at relational (http://g.dev/app/lib/angular/angular.js:6031:16)
at equality (http://g.dev/app/lib/angular/angular.js:6022:16)
at logicalAND (http://g.dev/app/lib/angular/angular.js:6013:16)
<form name="availForm" ui-validate="{startDate: validStartDate, sbe:startBeforeEnd}" class="ng-pristine ng-valid"> <br>
对watch函数的调用可以正确解析验证函数,但之后会抛出上述语法错误。 关于为什么角度不喜欢函数定义的任何想法。 谢谢
答案 0 :(得分:3)
您似乎需要在函数周围添加引号(''):
ui-validate="{startDate: 'validStartDate()', sbe:'startBeforeEnd()'}"