控制器在异步呼叫期间被破坏

时间:2016-01-06 22:48:27

标签: angularjs

鉴于下面的角度控制器,如果调用getData()会发生什么,并且在进行ajax请求时,用户导航到不同的路径? ajax请求是否继续,并且$scope /控制器是否保留在内存中?是否取消了ajax请求并且控制器正常销毁?

angular.module('myApp')
.controller('myController', function($scope, $http) {
    $scope.data = {};

    $scope.getData = function() {
        $http.get('/data/url')
        .then(function(response) {
            $scope.data = response.data;
        });
    }
});

1 个答案:

答案 0 :(得分:0)

像往常一样,保留由异步回调创建的闭包中捕获的所有引用。

因此不会取消ajax回调。

然而,destroyed范围将不包含在摘要周期中,并且它的观察者/听众被删除。

$destroy文档的相关部分:

  

从父级移除当前范围(及其所有子级)   范围。删除意味着不再调用$ digest()   传播到当前范围及其子级。删除也意味着   当前范围符合垃圾收集条件。

相关问题