我想了解角度服务和组件的生命周期。有角度的承诺能活多久?
说我有一个使用一个http服务的控制器:
function MyController($scope, $http) {
$http.get('/service').success(function(data) {
// handle the response
});
}
的事情是,该控制器可被连接到的视图。我想确保如果视图已被删除,响应将被丢弃,这是为了防止与可能在应用程序的其他部分触发的其他请求发生冲突。控制器的实例是否会被销毁,并且如果视图被删除,来自$http
服务的未决呼叫将被取消?例如,当用户从页面导航(不重新加载)导致新节的Javascript呈现?
[编辑]我创建了一个jsfiddle这表明,至少在$超时服务,挂起的操作仍然是$scope
通过导航离开后销毁运行。是否有一种简单的方法将异步操作附加到作用域,以便它们自动销毁?
你为什么不考呢?因为它是您需要提供更多关于您的应用程序的信息才能得出确凿的答案。 – ocodo
完成:http://jsfiddle.net/ADukg/4839/。我编辑了这个问题以包含我所尝试的内容。 –
你还没有真正解释你的控制器的生命周期。只要您的管理员居住,您的范围就会生活。你的控制器只要在DOM中并且在Angular中注册('ng-if'和'ng-view',路由就会销毁DOM并重建它的新实例,'ng-show'不会)。 AJAX服务是AJAX服务:调用将在浏览器的内存中生存,避免垃圾收集,在关闭中,直到没有更多的引用。也就是说:$ scope在调用完成之前不能被GCd调用,直到控制器不存在,调用才能被GCd ... – Norguard