$scope.map = {
center: {
latitude: 45,
longitude: -73
},
zoom: 8,
events: {
click: function (mapModel, eventName, originalEventArgs) {
if (!$scope.party)
return;
if (!$scope.party.location)
$scope.party.location = {};
$scope.party.location.latitude = originalEventArgs[0].latLng.lat();
$scope.party.location.longitude = originalEventArgs[0].latLng.lng();
//scope apply required because this event handler is outside of the angular domain
$scope.$apply();
}
},
marker: {
options: { draggable: true },
events: {
dragend: function (marker, eventName, args) {
if (!$scope.party.location)
$scope.party.location = {};
$scope.party.location.latitude = marker.getPosition().lat();
$scope.party.location.longitude = marker.getPosition().lng();
}
}
}
};
为什么我们不需要$scope.$apply();
在 marker.events.dragend 函数的末尾调用,但我们需要$scope.$apply();
在 events.click 函数的末尾调用?
请注意,我知道我们需要$scope.$apply();
在 events.click 函数的末尾调用,因为此回调由 Google Map API 调用。marker.events.dragend 函数不是 Google Map API 也会调用的回调吗?