【问题标题】:angularjs form validation syntax error token unexpected '{'angularjs表单验证语法错误令牌意外'{'
【发布时间】:2012-12-13 09:58:25
【问题描述】:

我正在使用指令来验证 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 函数的调用可以正确解析验证函数,但随后会引发上述语法错误。 关于为什么 angular 不喜欢函数定义的任何想法。 谢谢

【问题讨论】:

  • 我没有在你的第二小提琴中看到指令代码。你有一个显示问题的小提琴吗?第二个小提琴也不包括任何地方的AngularJS。
  • 非常正确,第二个小提琴仅代表我拉入的部分。这是一个单页应用程序 - 至少,我尝试过。我认为将整个设置放入小提琴中会太多。部分是根据触发的路由激活的。我将添加相关部分以便重现问题,或者我将创建一个更简单的版本以便重现问题。谢谢
  • 终于想通了 jsfiddle。如果你现在运行 fiddle,你可以看到异常——至少在 chrome 控制台中。 jsfiddle.net/sidkurias/xXf6b谢谢
  • 只是补充一下,我已经从我的原始应用程序中更改了一些代码。例如,我在小提琴中显式调用了 AvailabilityCtrl 控制器。功能没有改变,结果是一样的。

标签: javascript angularjs


【解决方案1】:

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

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

【讨论】:

  • 那肯定成功了!!!作为 javascript 新手,我不知道为什么需要这样做。这是 javascript 的怪癖还是 angular 处理指令的方式?
  • 就是这个指令的实现方式。
  • 也与 ng-include="'/_lib/lib/my.html'" 一起工作,似乎下划线让他发疯了
猜你喜欢
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
  • 2017-10-07
相关资源
最近更新 更多