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 ); });
}
);
}
}
});
問題は、リスナーがまだマップ インスタンスにアタッチされていることだと思いますが、どうすればそれを破棄できますか?