2014-01-07 29 views
0

通過對與Ionic platform,這是建立在角1.2.4使用教程應用程序走,我已經打了一個令人困惑的錯誤在該角度標記:AngularJS納克級的表達拋出語法錯誤

<content has-header="true" scroll="false"> 
     <list> 
     <item ng-repeat="project in projects" ng-click="selectProject(project)" ng-class="{active:activeProject==project}"> 
      {{project.title}} 
     </item> 
     </list> 
    </content> 

在Chrome控制檯中的錯誤是:

Error: [$parse:syntax] Syntax Error: Token 'itemClass' is an unexpected token 
at column 33 of the expression [{active:activeProject==project} itemClass] 
starting at [itemClass]. 

如果你正是如此改變NG-class屬性(加上分號):

 <item ng-repeat="project in projects" 
     ng-click="selectProject(project)" 
     ng-class="{active:activeProject==project};"> 

然後錯誤消失。

離子論壇用戶想知道這是爲什麼。我在ng-class上發現了很多SO帖子,並對文檔進行了回顧,但是我找不到證據表明後綴分號是必需的,例如, this post

我最好的猜測是Angular是干擾(縮小)類別代碼以及其他內容,並且在JavaScript嘗試運行之前沒有自動插入分號;但是Angular的文檔卻說它不使用eval(),所以令人費解的是它如何失敗。

想知道爲什麼會發生這種情況。

+1

請添加一個plunker。 – Stewie

回答

0

當我的指令(item在這種情況下)配置爲replace: true時,發生了這種情況,指令和要替換的元素都使用ng-class指令。我猜測angular會以一種導致語法錯誤的方式干擾ng-class屬性。

根據item指令的定義,這可能是這裏發生的。

修復(解決方法)是設置replace: false