在我们的应用程序中,我们有几层嵌套指令。为了加快摘要周期,我们删除了一些对静态数据具有数据绑定的顶级指令。相反,我们只是从静态数据中生成了 html,并对其进行了编译。但是,在这样做之后,我们开始在 Firefox 中收到无响应的脚本警告。这个生成的 html 的编译时间太长了。
我希望能够更好地了解这两种不同场景中的编译过程,以便我们将来能够正确优化。这是一个非常简化的小提琴,它显示了问题。这是它的重要部分:
var repeaterHtml = '<div repeater="allData"></div>';
var staticHtml = '';
angular.forEach($scope.allData, function(currData, currIndex) {
staticHtml += '<div dir1="allData[' + currIndex + ']"></div>';
});
$element.append(staticHtml);
与仅使用指令staticHtml
相比,使用 编译所需的时间要长得多。repeater
为什么是这样?纯粹是因为有更多的html要通过吗?当角度编译repeater
指令时,它不必像我手动进行的那样进行编译吗?当最终的 DOM 完全一样时,是什么repeater
指令使它编译得如此之快?
我很感激对此的任何见解。谢谢。