使用大量值和getter方法进行数据绑定?

时间:2013-07-15 23:13:50

标签: data-binding angularjs

在这里阅读Misko关于数据绑定的优秀答案:How does data binding work in AngularJS?,我想知道Angular如何在幕后进行污垢检查,因为:

我正在创建一个应用程序,它会向DOM打印大量的Car对象,每个Car看起来像这样:

var Car = function(settings) {
    this.name = settings.name;
    + many more properties...
}
Car.prototype = {
    calcPrice: function() { ... },
    + many more methods...
}

$scope.cars = [lots of Cars];

上面的链接答案提到了在DOM中打印时可以通过数据绑定提供的大约2000个值的限制,并且由于每个Car对象上的大量属性,在此应用程序中很容易超过此数字循环通过汽车阵列。

假设您最终通过数据绑定在DOM中打印了2000多个值,并且其中一个值更新,它是否会影响Angular的污垢检查性能,即2000个值存在,或者Angular以某种方式标记更改的值,因此它只在运行$ digest()时查看更改的值?换句话说,在初始打印后只有极少数数据可能会更新时,您是否拥有大量的数据绑定值是否重要?

如果它确实重要, - 并且因为大多数值是只读的 - 有一些方法可以使用数据绑定语法{{car.prop}}来获取DOM的值一次然后告诉Angular不再绑定他们了

将getter-methods添加到Car对象并提供像{{car.getProp()}}这样的属性会有所不同吗?

1 个答案:

答案 0 :(得分:1)

我遇到的问题与我正在处理的应用程序有同样的问题。拥有庞大的数据集不是问题,问题来自于绑定,ng-repeats特别是被杀死的表演。 部分解决方案是使用这个漂亮的库删除“动态”绑定和“静态”绑定:http://ngmodules.org/modules/abourget-angular