2

angular-meteor チュートリアルのステップ 16

$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();
          }
        }
      }
    };

なぜ、marker.events.dragend 関数の最後で呼び出す必要がない$scope.$apply();のに、events.click 関数の$scope.$apply();最後で呼び出す必要があるのでしょうか?

$scope.$apply();このコールバックは Google Map API によって呼び出されるため、events.click 関数の最後で呼び出す必要があることはわかっていることに注意してください。marker.events.dragend 関数は、Google Map API からも呼び出されるコールバックではありませんか?

4

0 に答える 0