我正在尝试打印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>




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

最佳答案

查看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>

关于javascript - AngularJS-引起语法错误的双花括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32076937/

10-11 06:10