AngularJS - 导致语法错误的双花括号

时间:2015-08-18 15:44:54

标签: javascript angularjs

我正在尝试打印ng-repeat的$ index,但它给了我:

Error: [$parse:syntax] Syntax Error: Token '{' is an unexpected token at column 8 of the expression [markers{{ $index }}] starting at [{{ $index }}].

这是我的代码:

<div ng-repeat="place in places">
         <leaflet id="map{{ $index }}" defaults="defaults" center="center" markers="markers{{ $index }}"></leaflet>
</div>

但改变这种方式有效:

<div ng-repeat="place in places">
     <leaflet id="map{{ $index }}" defaults="defaults" center="center" markers="markers0"></leaflet>

这很奇怪......为什么会这样?

2 个答案:

答案 0 :(得分:1)

查看leaflet指令=形式标记,See this code

=表示您在隔离内部已经启用了绑定方式,因为您必须在该属性中提供范围变量引用。

markers0在哪里可行,因为您提供了范围参考,

但是当你提供{{}}插值时,该属性会因为markers="markers{{ $index }}"

而失败

为了优雅地处理这个问题,我希望您创建一个markers数组,它将具有多个值,数据将变为这样

$scope.markers = [{...},{...},{...},...] 

而不是

$scope.marker0 = {}, $scope.marker1 = {}, $scope.marker2 = {}, ....

因此,您可以轻松地指出使用$index

<强>标记

<div ng-repeat="place in places">
    <leaflet id="map{{ $index }}" defaults="defaults" center="center" 
     markers="markers[$index]"></leaflet>
</div>

答案 1 :(得分:0)

我遇到了类似的问题,但使用了不同的指令。 我做的一件事实际上是在大括号

之前和之后放置一个引号
post()