AngularJS ng-class表达式抛出语法错误

时间:2014-01-07 20:06:51

标签: javascript angularjs

通过教程应用程序与Ionic platform一起使用,这是基于角度1.2.4构建的,我在这个Angular标记中遇到了一个令人困惑的错误:

    <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 个答案:

答案 0 :(得分:0)

当我的指令(在本例中为item)配置为replace: true时,我发生了这种情况,并且指令和它替换的元素都使用ng-class指令。我猜角度是以一种导致语法错误的方式将ng-class属性捆绑在一起。

这可能是这里发生的事情,具体取决于item指令的定义。

修复(解决方法)是设置replace: false