我注意到如果我们在数据表createdRow()上使用angularJs $ compile 当重新加载reloadData时,会增加分离的观察者和无人看管的DOM内容[/ p>]
即使使用分页增长,这也就是在分页数据中执行createdRow()
是否有可能在进入createdRows之前销毁之前的$ compiles Rows并避免此大内存泄漏?
我们使用angularJs $ compile,因为我们想要使用一些交互来渲染数据表行作为按钮ng-click,我们希望与控制器的$ scope中的函数进行交互。我们创建了数据表。
抱歉我的英文
如果您知道其他想法或解决方案,请告诉我。
提前感谢您的帮助和支持。
已获得更多信息: 谢谢scipper寻求帮助。
我添加了关于这个问题的测试,很多小时仍然无法释放内存泄漏:
从这个例子开始:
http://l-lin.github.io/angular-datatables/archives/#!/rerender
如果这个例子多次重新渲染并且没有内存泄漏
**但在我的版本中我使用reloadData:**
$scope.dtOptionsMyTable = DTOptionsBuilder.newOptions()
.withOption('ajax', function(){........})
.withOption('createdRow', function (row, data, dataIndex) {
$compile(angular.element(row).contents())($scope);
})
而且我不知道为什么我们会使用泄漏记忆。垃圾收集器不会全部删除。
如何删除内存中的所有这些元素?
我在每次重新加载时尝试这一点:
instanceTable.DataTable.clear();
即使我们尝试在这个
的另一个子对象intead中编译$compile(angular.element(row).contents())($scope);
我在每次重新加载时尝试这个
var newCreatedChildScope = $ scope。$ new(false); $编译(angular.element(行).contents())(newCreatedChildScope);
然后在每次重新加载时以这种方式销毁childscope
newCreatedChildScope.$destroy();
newCreatedChildScope=null;
仍然有很多内存泄漏。
有没有办法使用instance.DataTable引用在重新加载数据之前销毁更多关于表的内容?我认为这可能是解决方案
由于
答案 0 :(得分:0)
我不太确定,你在描述内存泄漏方面有什么问题,但我认为你的问题的答案是否有可能破坏以前的$ compiles Rows ,是的。那一刻,他们被从DOM中删除,他们被摧毁了。
如果您仍然遇到内存泄漏,请尝试与我们分享更多信息。