Google 地图标记和 AngularJS
Google Maps Markers and AngularJS
我正在使用 Ionic (AngularJS + Cordova)。
使用以下代码,我创建了带有单击事件的标记,但是当我单击标记时,$scope.example 未在视图中更新(但在控制台中它显示 id,函数有效)。为什么?
我认为这些标记不是用 AngularJS(?).
编译的
$scope.setInfoWindow = function(id){$scope.example = id;console.log(id)}
for(i=0;i<data.length;i++){
marker = new google.maps.Marker({
position: new google.maps.LatLng(data[i].latit,data[i].longi),
map: map,
animation: google.maps.Animation.DROP
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
$scope.setInfoWindow(data[i].id);
}
})(marker, i));
}
Angular作用域在处理事件/通过事件操纵作用域时不运行它的摘要循环,那时你需要手动运行摘要循环。
范围变量更新完成后,您需要手动 运行 摘要循环。这样它将更新视图上的绑定。
$scope.setInfoWindow = function(id){
$scope.example = id;
console.log(id)
$scope.$apply(); //running digest cycle to update binding
}
我正在使用 Ionic (AngularJS + Cordova)。
使用以下代码,我创建了带有单击事件的标记,但是当我单击标记时,$scope.example 未在视图中更新(但在控制台中它显示 id,函数有效)。为什么?
我认为这些标记不是用 AngularJS(?).
$scope.setInfoWindow = function(id){$scope.example = id;console.log(id)}
for(i=0;i<data.length;i++){
marker = new google.maps.Marker({
position: new google.maps.LatLng(data[i].latit,data[i].longi),
map: map,
animation: google.maps.Animation.DROP
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
$scope.setInfoWindow(data[i].id);
}
})(marker, i));
}
Angular作用域在处理事件/通过事件操纵作用域时不运行它的摘要循环,那时你需要手动运行摘要循环。
范围变量更新完成后,您需要手动 运行 摘要循环。这样它将更新视图上的绑定。
$scope.setInfoWindow = function(id){
$scope.example = id;
console.log(id)
$scope.$apply(); //running digest cycle to update binding
}