通过教程应用程序与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(),所以令人费解的是它失败了。
很想知道为什么会这样。
答案 0 :(得分:0)
当我的指令(在本例中为item
)配置为replace: true
时,我发生了这种情况,并且指令和它替换的元素都使用ng-class
指令。我猜角度是以一种导致语法错误的方式将ng-class属性捆绑在一起。
这可能是这里发生的事情,具体取决于item
指令的定义。
修复(解决方法)是设置replace: false
。