0

Google マップ インスタンスにマーカーを追加する可能性を提供するサービスを構築しましたが、これは ngRoute サービスを使用して特定のコントローラー内にいる場合にのみ発生します。問題は、アプリを最初にロードしたとき、サービスが注入されたコントローラーの外では機能せず、注入されたコントローラーに切り替えて機能するが、それが存在しないコントローラーに戻ると '私のサービス作品を注入しました!ここで問題はどこにありますか?

ngRoute 構成

var climbingApp = angular.module('climbingApp', ['ngRoute'], 
 function($routeProvider){
    $routeProvider.when('/', {
        controller: 'Main'
    });

    $routeProvider.when ('/newSector', {
        templateUrl: 'app/templates/newSector.html',
        controller: 'addSector'
    });
});

コントローラー

    function addSector($scope, Markers) {

        Markers.addListener( function ( e ){
                $scope.lat = e.latLng.lat();
            $scope.lng = e.latLng.lng();
        });

    }

    function Main ($scope) {
           $scope.initLocation = {
                   lat: -54.798112,
                   lng: -68.303375
           };

    }

サービス

climbingApp.factory('Markers', function($rootScope){
    return {
        addListener: function( callback ) {
            google.maps.event.addListener(
                map,
                'click',
                 function( e ) {
                    var marker = new google.maps.Marker({
                        position: e.latLng,
                        map: map
                    });

                    $rootScope.$apply( function(){ callback( e ); });
                }
            );
        }
    }
});

問題は、リスナーがまだマップ インスタンスにアタッチされていることだと思いますが、どうすればそれを破棄できますか?

4

1 に答える 1