Javascript 如何使用ng重复生成的幻灯片正确刷新角度平滑旋转木马

Javascript 如何使用ng重复生成的幻灯片正确刷新角度平滑旋转木马,javascript,angularjs,slick.js,Javascript,Angularjs,Slick.js,我有一个相当复杂的carousel,它是使用ajax调用提供的数据从带有ng repeat的模板生成的。数据每分钟定期更新一次。这在一段时间内可以正常工作,但最终浏览器会缓慢爬行并停止响应用户输入 我创建了一个plunker来演示这个问题。刷新的触发方式如下: var watch = $scope.$watch('items', function () { // just a deep copy in place of more complex processing in the rea

我有一个相当复杂的carousel,它是使用ajax调用提供的数据从带有ng repeat的模板生成的。数据每分钟定期更新一次。这在一段时间内可以正常工作,但最终浏览器会缓慢爬行并停止响应用户输入

我创建了一个plunker来演示这个问题。刷新的触发方式如下:

var watch = $scope.$watch('items', function () {
    // just a deep copy in place of more complex processing in the real world scenario
    $scope.processeditems = angular.copy($scope.items);

    // refresh carousel
    if (slick.hasClass('slick-initialized')) {
        console.log('unslicking');

        slick.slick('unslick');
        slick.slick(options);
    }
});
显然,本例中的时间尺度被大大夸大了(另一方面,与我的现实场景相比,演示非常简单,每个项目上都有两层指令)。在几百次迭代之后,刷新周期开始影响性能-尝试在编辑器面板中滚动代码以观察稳定的性能下降。这在我的原始代码中要明显得多——只需要10-20次刷新就可以在那里看到

只有在未舔/光滑的地方,问题才会显现出来。如果我省略$watch并将ng repeat直接连接到原始的$scope变量,似乎也没有问题。不幸的是,我必须在真实场景中进行一些处理,因此如果不进行一些重大修改,我无法使用这种方法。这总是一个选择,但我想找出我在这里做错了什么。有什么想法吗