如何在视图中使用Javascript google.maps.places.Autocomplete避免内存泄漏
我在google.maps.places.Autocomplete和单页应用程序方面遇到了问题。长话短说,我有一个带有如何在视图中使用Javascript google.maps.places.Autocomplete避免内存泄漏,javascript,angularjs,memory-leaks,maps,ng-view,Javascript,Angularjs,Memory Leaks,Maps,Ng View,我在google.maps.places.Autocomplete和单页应用程序方面遇到了问题。长话短说,我有一个带有表单和输入字段的角度指令。输入字段具有自动完成功能,因此当单击并键入地址时,它会显示匹配的地址。它的单页应用程序,因此当用户导航到页面时,它会加载相应的ng视图。当用户导航到另一个页面并且在ng视图中加载了另一个内容时,内存不会被清除。使用GoogleChrome中的配置文件和快照,我清楚地看到有垃圾剩余,表单元素被分离(用红色标记)。这是由于input字段附加了autocomp
表单
和输入
字段的角度指令。输入
字段具有自动完成功能,因此当单击并键入地址时,它会显示匹配的地址。它的单页应用程序,因此当用户导航到页面时,它会加载相应的ng视图
。当用户导航到另一个页面并且在ng视图中加载了另一个内容时,
内存不会被清除。使用GoogleChrome中的配置文件和快照,我清楚地看到有垃圾剩余,表单元素被分离(用红色标记)。这是由于input
字段附加了autocomplete
。
我把范围缩小到声明newgoogle.maps.places.Autocomplete
的行。如果我删除了对autocomplete的调用,内存将按应有的方式清除,否则,存在inputaaa
的整个表单将保留在内存中。
我还清除了$destroy上的所有变量,这样就可以对其进行垃圾收集,但似乎什么都不起作用。是否有任何解决方案以及在动态加载的ng视图中使用Autocomplete而不泄漏内存的方法
link: function (scope, elem, attrs, ctrl) {
var autocomplete;
var aaa=document.getElementById('address');
function initializeGoogleMaps() {
autocomplete = new google.maps.places.Autocomplete(
(aaa), {
types: ['geocode']
});
scope.$on('$destroy', function () {
$(".pac-container").remove();
autocomplete=null;
});
}
initializeGoogleMaps();
// some other code