2012-12-28 25 views
1

我正在使用一個指令來驗證angularjs(版本1.0.2)中的兩個表單字段(日期)。爲了驗證表單我使用下面的指令。
http://jsfiddle.net/cafau/Ja2ar/
我所做的唯一更改是將該指令重命名爲ui-validate。 我在
http://jsfiddle.net/sidkurias/xXf6b/ 創建了一個小提琴我已經包含了我使用的部分html和控制器的相關部分。 控制器validStartDate和startBeforeEnd上有兩個方法我想從指令中調用。當我這樣做,我得到以下錯誤angularjs表單驗證語法錯誤令牌意外'{'

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> 

到手錶函數調用正確解析驗證功能,但隨後拋出上述語法錯誤。 爲什麼角度不喜歡函數定義的任何想法。 謝謝

+0

我沒有看到你的第二小提琴的指令代碼。你有小提琴顯示問題嗎?第二個小提琴也不包括AngularJS在任何地方。 –

+0

非常正確,第二個小提琴代表了我拉入的部分。這是一個單頁的應用程序 - 至少,我嘗試一個。我認爲把整個設置放到提琴中會太多了。部分是基於被觸發的路線激活的。我將添加相關部分,以便可以複製問題,或者我將創建一個更簡單的版本,以便可以複製問題。謝謝 –

+0

最後想出了jsfiddle.if你現在運行小提琴,你可以看到異常 - 至少在chrome控制檯中。 http://jsfiddle.net/sidkurias/xXf6b/謝謝 –

回答

3

看來你需要將引號(「」)將您的功能:

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

那當然做到了!作爲JavaScript新手,我無法分辨爲什麼需要這樣做。這是一種javascript偏心還是角度處理指令的方式? –

+0

這是該指令的實施方式。 – asgoth

+0

Upvote如果它幫助你請。 – asgoth