-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不会消失当然是因为你没有阻止它。并且,直到你停止它,它使用的变量不能被垃圾收集。 –