0
我已經構建了一個服務來提供向谷歌地圖intance添加標記的可能性,但是這隻發生在使用ngRoute服務的特定控制器中時。問題是,當我第一次加載應用程序時,我的服務無法在注入的控制器之外工作,當我切換到注入控制器並且它可以工作時,但是當我向後轉到控制器時, t注入我的服務作品!問題在哪裏?仍然可以從控制器外部提供服務AngularJs
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); });
}
);
}
}
});
我想這個問題是聽衆仍然依靠地圖實例,但我怎麼能摧毀它呢?
難道你不使用.factory方法定義服務嗎?我如何確保控制器正在銷燬? 。 –
裏面你控制器,你可以指定一個對破壞方法,你可以檢查,看看是否被觸發:$ $範圍在(「$滅」,函數(){警報(「控制器毀」)}); – btm1