我正在尝试打印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>
这很奇怪......为什么会这样?
答案 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()