Javascript 角$编译速度慢,如何避免

Javascript 角$编译速度慢,如何避免,javascript,angularjs,Javascript,Angularjs,考虑以下几点: 这是一个简单的树布局。首先单击加号创建子树,然后单击展开和折叠子树。对于大量的孩子来说,创造要比其他动作花费更长的时间。我认为$compile调用占用了大部分时间 原因是什么?有没有办法加快速度 指令代码: myApp.directive('myTree', ['$compile', function ($compile) { return { link: function (scope, element, attrs) { va

考虑以下几点:

这是一个简单的树布局。首先单击加号创建子树,然后单击展开和折叠子树。对于大量的孩子来说,创造要比其他动作花费更长的时间。我认为$compile调用占用了大部分时间

原因是什么?有没有办法加快速度

指令代码:

myApp.directive('myTree', ['$compile', function ($compile) {
    return {
        link: function (scope, element, attrs) {
            var template =
                '<ul><li ng-repeat="node in node.children">' +
                '<span ng-click="displayTree.selectNodeHead(node)">+ </span>' +
                '<span>{{node.name}}</span>' +
                '<div ng-hide="node.collapsed" my-tree></div></li></ul>';
            element.html('').append($compile(template)(scope));
        }
    };
}]);
myApp.directive('myTree',['$compile',function($compile){
返回{
链接:函数(范围、元素、属性){
变量模板=
“
”; html(“”).append($compile(template)(scope)); } }; }]);
ng repeat
$compile()
对于大型迭代来说是出了名的慢。使用本机JavaScript进行迭代并添加HTML字符串,然后使用本机
onclick
命令代替
ng click
。这种方法需要一些重大的重新思考和代码重构,但性能方面的好处是巨大的(我已经将500项ng repeat转换为本机DOM,渲染时间从1.2秒缩短到了.06秒(提高了95%)

这是一个本地JS和Angular在1000个项目上协调工作的示例。渲染和响应几乎是即时的


我不知道“和谐”。迭代过程中没有角度-所以你基本上放弃了使用角度的所有代码结构优势。别误会-在某些情况下可能需要这样做。:)这是本机的吗?这就是jQuery