【问题标题】:AngularJS - Looping through array is throwing Syntax ErrorAngularJS - 遍历数组会引发语法错误
【发布时间】:2015-01-23 19:49:59
【问题描述】:

我有这段代码,我想将数组数据推送到一个范围内,以便在地图上显示图钉。它显示第一个引脚,但不显示其他引脚。

运行时出现错误:错误: [$parse:syntax] 语法错误:令牌“.0”是表达式 [markers.0] 开始的第 8 列的意外令牌在 [.0]。

我的代码是:

$scope.markers = [];
    var pos = [
    {      
        lat: 51.918374,
        lng: 19.594210
    },
    {        
        lat: 51.018374,
        lng: 19.094210
    },
     {        
        lat: 52.518374,
        lng: 19.594210
    },
    {        
        lat: 52.018374,
        lng: 19.694210
    }];
    pos.forEach(function(value){
      $scope.markers.push({
         lat: value.lat,
         lng: value.lng,
         message: "aaaa",
         focus: false,
         draggable: false
        });
    });

尝试使用 angular.forEach:

var pos = [
    {      
        lat: 51.918374,
        lng: 19.594210
    },
    {        
        lat: 51.018374,
        lng: 19.094210
    },
     {        
        lat: 52.518374,
        lng: 19.594210
    },
    {        
        lat: 52.018374,
        lng: 19.694210
    }];
    var log = [];
    angular.forEach(pos, function(value, key) {
      this.push({
         lat: value.lat,
         lng: value.lng,
         message: "aaaa",
         focus: false,
         draggable: false
        });
    }, log);
    console.log(log);
    $scope.markers = log;

HTML:

<leaflet layers="map" center="map.center" overlay="map.overlays" markers="markers" ng-if="map"></leaflet>

任何想法我做错了什么?谢谢

【问题讨论】:

  • 看起来不错,你能发布一个演示来重现这个问题吗?另外,尝试使用map,例如$scope.markers = post.map(...)
  • 你应该使用angular.forEach API
  • 还有angular.forEach,你应该试试...
  • @tomepejo 为什么 OP @tutchmedia 应该使用angular.forEach
  • 大家好,感谢您的帮助。我试过 angular 和同样的错误......见上面的代码

标签: javascript arrays angularjs angularjs-scope


【解决方案1】:

基于this,标记应该是一个对象,而不是一个数组。

$scope.markers = {};
var pos = [{
    lat: 51.918374,
    lng: 19.594210
}, {
    lat: 51.018374,
    lng: 19.094210
}, {
    lat: 52.518374,
    lng: 19.594210
}, {
    lat: 52.018374,
    lng: 19.694210
}];

pos.forEach(function (value, index) {
    $scope.markers[index] = {
        lat: value.lat,
        lng: value.lng,
        message: "aaaa",
        focus: false,
        draggable: false
    };
});

【讨论】:

  • 不,它将是一个对象。你真的检查过它是一个对象吗?为什么投反对票?如果你不想要它,就离开它吧! @tomepejo。
  • 刚刚尝试了您的更改,它仍然给我同样的错误:(
  • 然后发布一个小提琴。在任何情况下,您都应该彻底检查文档
  • 我也使用 Ionic 有关系吗?
  • 很难说。尝试先剥离所有 ionic 相关代码,然后尝试让 leaflet 先工作
【解决方案2】:

我遇到了同样的错误,我用这种方式修复了它:

  1. 更新 angular-leaflet-directive 版本angular-leaflet-directive source

  2. 在我的项目中包含 angular-simple-logger angular-simple-logger source

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多