Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs-一次绑定不会在'ng repeat'中提供任何性能改进`_Javascript_Angularjs_Performance - Fatal编程技术网

Javascript angularjs-一次绑定不会在'ng repeat'中提供任何性能改进`

Javascript angularjs-一次绑定不会在'ng repeat'中提供任何性能改进`,javascript,angularjs,performance,Javascript,Angularjs,Performance,要在ng repeat中提高速度,而不是双向,我已更改为单向绑定以提高速度。但我在这里根本找不到任何速度表现。有谁能帮我提高一下ng repeat的速度吗 当我使用单向ng重复在2之间移动时,我的过程输出显示为没有大的变化 VM780 script.js:30 Process time: 124 //single way VM780 script.js:30 Process time: 132 //double way VM780 script.js:30 Process time: 120 /

要在
ng repeat
中提高速度,而不是双向,我已更改为单向绑定以提高速度。但我在这里根本找不到任何速度表现。有谁能帮我提高一下
ng repeat
的速度吗

当我使用单向
ng重复在2之间移动时,我的过程输出显示为没有大的变化

VM780 script.js:30 Process time: 124 //single way
VM780 script.js:30 Process time: 132 //double way
VM780 script.js:30 Process time: 120 //single way
VM780 script.js:30 Process time: 121 // double way
VM780 script.js:30 Process time: 124 // single way
以下是我使用的
ng repeat

<div class="showList"> 
      <ul>
        <li ng-repeat="d in data">{{::d.name}}{{::d.address}}{{::d.city}}{{::d.country}}</li> 
        <!-- <li ng-repeat="d in data">{{d.name}}{{d.address}}{{d.city}}{{d.country}}</li> -->
      </ul>
    </div> 

  • {{::d.name}{{::d.address}{{::d.city}{{::d.country}

这里的问题是对性能改进的错误期望。该脚本不会从这些优化中获益。它每次生成一组新的数据

类似地,测试性能的方法也是错误的,它只是测量生成一组新数据并对其进行初始摘要所需的时间——每次都是相同的

在对同一组数据进行后续摘要时,一次性绑定是有益的

衡量这一点的方法如下

  setInterval(function () {
    console.time('digest');
    $scope.$apply();
    console.timeEnd('digest');
  }, 1000)
这边

<li ng-repeat="d in data">{{::d.name}}{{::d.address}}{{::d.city}}{{::d.country}}</li>
  • {{::d.name}{{::d.address}{{::d.city}{{::d.country}
  • 将显示一些性能改进

    <li ng-repeat="d in data">{{d.name}}{{d.address}}{{d.city}}{{d.country}}</li>
    
  • {{d.name}{{d.address}{{d.city}{{d.country}

  • 当观察者计数变得更高时,它变得至关重要。

    另外,它应该是数据中的
    ::d
    。如果你不知道你在优化什么,那么优化是没有意义的。在这种情况下,填充
    数据后,下一个摘要将受到影响,并且没有下一个摘要。而且它根本不是单向绑定。这是一次绑定。实际上,
    ::d in data
    抛出错误,而我使用的是
    d in::data
    -但性能仍然没有改进。是的,它应该是d in::data。当然,在初始摘要上不会有性能改进。当然,在按下下一个按钮时,
    d in::data
    的性能会有所提高,因为数据只会绑定一次。这可能不符合预期(更改$scope.data不会更新表),但有显著的性能改进,比如100ms与5ms。