【发布时间】:2015-02-17 12:56:27
【问题描述】:
我正在使用传单指令在 openStreet 地图上显示地图。要列出所有标记,我的代码如下所示:
$scope.goTo = function() {
restAPI.getSomething().success(function(data) {
var anArray = data.lists;
console.log(anArray);
var anotherList = {};
angular.forEach(anArray, function(value, key) {
if (value.geolocation) {
$scope.project = value;
anotherList[anArray[key].ao] = {
lat: value.lat,
lng: value.lng,
focus: false,
draggable: false,
icon: icon,
message: '<button type="button" ng-click="openProject(project)">' + value.ao + '</button> {{project.ao}}',
clickable: true
}
}
});
$scope.map.anotherList = anotherList;
});
}
在该消息模板中,我正在添加一个带有函数调用的按钮,据我所知,要在模板中传递一个变量,Scope 是解决方案,但在这里,所有标记上 value.ao 名称都不同,但 project.ao 是一样的……(为什么????)
当我点击每个标记时,它在数组(anArray)中打开最后一个项目。
如何在每次迭代中绑定范围值?,这样我就可以在每个标记上打开正确的项目
【问题讨论】:
-
你应该把
$scope.project变成一个数组,这样在forEach循环的每次迭代中你可以分配一个不同的值(即$scope.project[key]=value),然后在你的消息字符串中使用它作为出色地。否则,您的$scope.project在逻辑上将指向数组中的最后一个元素,正如您所描述的那样。这确实是你编程的。 -
嗨 Edwin,感谢您抽出宝贵时间,我将投影更改为数组,但在消息字符串中使用该键值时我有点迷失了,我尝试过类似 project(key),它不起作用跨度>
-
我想它一定是
ng-click='openProject(project[' + key + '])'。这样它就会产生一个像'openProject(project[0])'这样的字符串,并在下一次迭代中产生'openProject(project[1])'等等。您必须确保键(即数组索引)在特定迭代的字符串中硬编码。
标签: javascript angularjs angularjs-scope angular-leaflet-directive