Javascript angularjs表单验证语法错误标记意外';{';

Javascript angularjs表单验证语法错误标记意外';{';,javascript,angularjs,Javascript,Angularjs,我使用指令验证angularjs(版本1.0.2)中的两个表单字段(日期)。为了验证表单,我使用以下指令。 我所做的唯一更改是将指令重命名为ui-validate。 我在上创作了一把小提琴 我已经包括了我正在使用的html的一部分和控制器的相关部分。 我想从指令中调用控制器validStartDate和startBeforeEnd上的两个方法 Error: Syntax Error: Token '{' is unexpected, expecting [)] at column 13 of

我使用指令验证angularjs(版本1.0.2)中的两个表单字段(日期)。为了验证表单,我使用以下指令。

我所做的唯一更改是将指令重命名为ui-validate。 我在
上创作了一把小提琴 我已经包括了我正在使用的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>
Error:语法错误:标记“{”是意外的,在表达式[(函数(){
var sdate=新日期($scope.avail.sdate),
今天=新日期(getDefaultDates(0));
返回sdate>=今天;
})&&true]开始于[{
var sdate=新日期($scope.avail.sdate),
今天=新日期(getDefaultDates(0));
返回sdate>=今天;
})&&true]。出现错误()
投手(http://g.dev/app/lib/angular/angular.js:5867:11)
消耗(http://g.dev/app/lib/angular/angular.js:5905:7)
小学(http://g.dev/app/lib/angular/angular.js:6075:7)
一元(http://g.dev/app/lib/angular/angular.js:6066:14)
乘性(http://g.dev/app/lib/angular/angular.js:6049:16)
添加剂(http://g.dev/app/lib/angular/angular.js:6040:16)
在关系(http://g.dev/app/lib/angular/angular.js:6031:16)
平等(http://g.dev/app/lib/angular/angular.js:6022:16)
在logicalAND(http://g.dev/app/lib/angular/angular.js:6013:16) 

对watch函数的调用正确解析验证函数,但随后抛出上述语法错误。 关于angular为什么不喜欢函数定义的任何想法。
谢谢

您似乎需要在函数周围加引号(“”):

ui-validate="{startDate: 'validStartDate()', sbe:'startBeforeEnd()'}"

我在你的第二个提琴中没有看到指令代码。你有一个提琴显示问题吗?第二个提琴也不包括AngularJS。完全正确,第二个提琴只代表我拉进去的部分。这是一个单页应用程序-至少,我尝试了一个。我想把整个设置放到提琴中是不可能的太多了。部分是根据触发的路由激活的。我将添加相关部分,以便重现问题,或者我将创建一个更简单的版本,以便重现问题。谢谢你终于找到了JSFIDLE。如果你现在运行FIDLE,你可以看到异常-至少在chrome控制台中。谢谢你另外,我对原始应用程序的代码做了一些更改。例如,我在fiddle中显式调用了AvailabilityCtrl控制器。功能没有改变,结果是一样的。这确实起到了作用!!!作为javascript新手,我不知道为什么需要这样做。这是javascript的怪癖还是javascript的怪癖angular处理指令的方式?这是该指令的实现方式。另外,使用ng include=“”/_lib/lib/my.html”的工作,似乎下划线让他发疯了