减少观察者

时间:2015-11-18 10:21:16

标签: javascript angularjs

我正在使用Angular JS构建2D地图。基本上,我收到一个看起来像这样的多维数组:

map: [
  40 : [
    40: { obj1: [], obj2: [], obj3: [], obj4: [], prop1: 'x', prop2: 'y' },
    41: { obj1: [], obj2: [], obj3: [], obj4: [], prop1: 'x', prop2: 'y' },
    ...,
    45: { obj1: [], obj2: [], obj3: [], obj4: [], prop1: 'x', prop2: 'y' }
  ],
  41 : [
    40: { obj1: [], obj2: [], obj3: [], obj4: [], prop1: 'x', prop2: 'y' },
    41: { obj1: [], obj2: [], obj3: [], obj4: [], prop1: 'x', prop2: 'y' },
    ...,
    45: { obj1: [], obj2: [], obj3: [], obj4: [], prop1: 'x', prop2: 'y' }
  ],
  ...
];

我正在使用此数组和ng-repeat来显示2D地图,因此如果用户可以看到5个案例,我会显示11x11地图。此外,在每个位置[(40-41),(40-42)等],我显示一些计数器,它们是“obj1”,“obj2”,“obj3”和“obj4”的属性“长度”。 / p>

所有这些都很有效,但我对表演有点担心。我正在使用单向绑定,但在一天结束时,整个地图都使用了1400名观察者。这是相当不错的,但是用户可以看到超过5的距离。如果它显示地图以在距离10处看到,则地图将是21x21 =>方式更多的观察者...

我已经用Google搜索了一些方法来改善这一点,但我真的不知道如何减少观察者的数量。问题是,为了刷新视图,我真的刷新整个数组,所以我的想法是将顶部绑定“双向”,其余的“单向”(子元素),这样,当整个表格内容发生变化时,再次进行绑定,但没有为diffrentes地图案例定义观察者。

我也看到我可以使用ng-if,但是对应于地图的HTML可能会非常结果(特别是对于21x21地图),所以我想避免以这种方式操纵DOM。

有人会对此有所了解吗?

0 个答案:

没有答案