-1
在我的下面的示例中,您可以看到,每次進入一個頁面時,都會創建一個具有不同ID的新實例,而舊的實例不會被銷燬, setIntervat方法會在所有這些方法上記錄相應的作用域ID和水果名稱。比方說,我有一個ajax調用,而不是日誌,它不時刷新頁面的內容,但我不想打電話給不活動的頁面,我該如何解決這個問題?創建相同控制器的角度多個實例
var app = angular.module('plunker', ['ngRoute']);
app.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/fruit/:fruitId', {
templateUrl: 'fruit-tpl.html',
controller: 'FruitController'
})
.otherwise({
redirectTo: '/fruit/1'
});
}]);
app.controller('FruitController', ['$scope', '$routeParams',
function($scope, $routeParams) {
var fruitArr = ['Lemons', 'Oranges', 'Grapefruit'],
fruitId = $routeParams.fruitId - 1;
$scope.fruitName = fruitArr[fruitId];
setInterval(function() {
console.log('scope', $scope.$id, $scope.fruitName);
}, 3000);
}
]);
setInterval不會消失當然是因爲你沒有阻止它。並且,直到你停止它,它使用的變量不能被垃圾收集。 –