如果在AngularJs中我们在jquery datatables

时间:2017-10-25 07:36:24

标签: angularjs datatables

我注意到如果我们在数据表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引用在重新加载数据之前销毁更多关于表的内容?我认为这可能是解决方案

由于

1 个答案:

答案 0 :(得分:0)

我不太确定,你在描述内存泄漏方面有什么问题,但我认为你的问题的答案是否有可能破坏以前的$ compiles Rows ,是的。那一刻,他们被从DOM中删除,他们被摧毁了。

如果您仍然遇到内存泄漏,请尝试与我们分享更多信息。