2015-01-23 3 views
0

У меня есть этот код, который я бы хотел вывести данные массива в область для отображения контактов на карте. Он показывает первый вывод, но не делает других.AngularJS - Зацикливание через массив бросает ошибку синтаксиса

Когда Он запустить я получаю сообщение об ошибке: Ошибка: [$ синтаксического анализа: синтаксис] Ошибка синтаксиса: лексема»0,0' неожиданный маркер в колонке 8 выражения [markers.0] начиная с [.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> 

Любые идеи, что я делаю неправильно? Спасибо

+1

Выглядит хорошо, можете ли вы опубликовать демоверсию для воспроизведения t он выдает? Кроме того, попробуйте использовать 'map', например' $ scope.markers = post.map (...) ' – elclanrs

+0

Вы должны использовать' angular.forEach' [API] (https://docs.angularjs.org/api/ng /function/angular.forEach) – tomepejo

+0

Существует также угловой.forEach, вы должны попробовать это ... –

ответ

0

Основано на 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 
    }; 
}); 
+0

В вашем коде 'markers' все равно будет Array. – tomepejo

+0

Нет, это будет объект. Вы действительно проверили, что это объект? Почему downvote? Если вы – dcodesmith

+0

Просто попробовал свои изменения, и он по-прежнему дает мне такую ​​же ошибку :( – tutchmedia

Смежные вопросы