AngularJS:错误:[$ parse:syntax] @和<space> </space>的语法错误

时间:2014-11-18 13:36:53

标签: javascript angularjs

我的以下代码段无效,我不断收到错误消息。我正在动态生成此内容。但是当它呈现时,我会收到错误。

我尝试过escape(),但它仍无法正常工作。

$ scope.teamInvites [index] .teamInviteId的值类似于12334

tname的值类似于Test Team 1

电子邮件的值类似于test@email.com

 + "<a ng-click='deleteRow(" + rowID + "," + $scope.teamInvites[index].teamInviteId+")'>Delete</a> | "
                                  + "<a ng-click='reInvite(" + rowID + "," + tname + ","+ email+")'>ReInvite</a>" 

错误:

Error: [$parse:syntax] Syntax Error

每当变量中有@或空格时,我都会收到此错误。  我不知道这里的工作是什么。否则它工作正常。

2 个答案:

答案 0 :(得分:1)

您需要转义生成的表达式中的字符串。所以(只是第二行):

+ "<a ng-click='reInvite(" + rowID + ","\" + tname + "\",\"" + email + "\")'>ReInvite</a>"
//                                      ^             ^  ^              ^
//                                      |             |  |              |
//  look here --------------------------+-------------+--+--------------+

答案 1 :(得分:0)

您可以使用数组来构建字符串而不是转义字符 - 使用Array.prototype.join。

对于字符串定义的模板而言,它非常高效且广泛用于Angular社区:

    var a = [
        "<a ng-click='deleteRow(", rowId, ",", $scope.teamInvites[0], ")", "'>Delete</a> | ",
        "<a ng-click='reInvite(", rowID, ",", tname, ",", email ,")'>ReInvite</a>"
    ].join(''); // Join to a string.