AngularJS表达式在ng-click中引发语法错误

AngularJS expression throwing a Syntax error in ng-click

本文关键字:语法 错误 表达式 ng-click AngularJS      更新时间:2023-09-26

好的,我正在网站的评论区工作,用户可以在这里对原始帖子或任何后续帖子发表评论。为了在angular.js中完成这个渲染,我在递归方面玩得很开心。

<script type="text/ng-template"  id="renderer.html">
   {{comment.userName+' - '+comment.commentText}}
   <br/><button class="standardButton">respond</button>
   <ul>
       <li ng-repeat="comment in comment.childComments | orderBy:'commentId'" ng-include="'renderer.html'"></li>
   </ul>
</script>
<ul>
    <li data-ng-repeat="comment in comments" data-ng-include="'renderer.html'"></li>
</ul>

这本身就非常有效。然而,我需要能够看到关于哪个按钮被点击的数据。我将我的代码更新为:

<script type="text/ng-template"  id="renderer.html">
{{comment.userName+' - '+comment.commentText}}
<br/><button class="standardButton" ng-click='alertMe({{comment.userName}})'>respond</button>
<ul>
    <li ng-repeat="comment in comment.childComments | orderBy:'commentId'" ng-include="'renderer.html'"></li>
</ul>

请注意添加了ng click。alertMe方法已在带有纯字符串的控制器中成功测试。只有在使用角度表达式时才会中断。

对于加载的每个评论,我在控制台中都会收到以下错误:

> Error: [$parse:syntax]
> http://errors.angularjs.org/1.2.15/$parse/syntax?p0=comment.userName&p1=is%20unexpected%2C%20expecting%20%5B%3A%5D&p2=11&p3=alertMe(%7B%7Bcomment.userName%7D%7D)&p4=comment.userName%7D%7D)
>     at Error (native)
>     at http://localhost:8080/Vail/jslib/angular.min.js:6:450
>     at Za.throwError (http://localhost:8080/Vail/jslib/angular.min.js:162:211)
>     at Za.consume (http://localhost:8080/Vail/jslib/angular.min.js:163:183)
>     at Za.object (http://localhost:8080/Vail/jslib/angular.min.js:170:340)
>     at Za.primary (http://localhost:8080/Vail/jslib/angular.min.js:161:358)
>     at Za.unary (http://localhost:8080/Vail/jslib/angular.min.js:168:73)
>     at Za.multiplicative (http://localhost:8080/Vail/jslib/angular.min.js:167:310)
>     at Za.additive (http://localhost:8080/Vail/jslib/angular.min.js:167:170)
>     at Za.relational (http://localhost:8080/Vail/jslib/angular.min.js:167:34) <button
> class="standardButton" ng-click="alertMe({{comment.userName}})">

棱角分明的站点有这样一句话:

错误:$parse:syntax语法错误语法错误:令牌"comment.userName"位于表达式[{3}]的第{2}列开始位于[{4}]。

有人知道是什么导致了这个错误吗?我们非常感谢您提供的任何信息。

ng-click中不需要括号,因为它需要表达式,而不是模板。将违规行更改为:

<br/><button class="standardButton" ng-click='alertMe(comment.userName)'>respond</button>