将反应范围限制在Meteor中的子文档

时间:2013-03-17 17:31:30

标签: meteor

我有一个mongo文档结构如下:

Gallery
--- Sub-Gallery
------ Image
------ Image
------ Image
--- Sub-Gallery
------ Image
------ Image
.
.
.
Gallery
.
.
.

我想在屏幕上代表它。天真的实施将是:

<name template="gallery">
{{#with get_specific_gallery_helper))
    {{#each sub_gallery}}
    This is a gallery {{name_sub_gallery}}
        {{#each image}}
            Something {{name_image}}
        {{/each}} 
    {{/each}}
{{/with}}

这种植入的问题在于每次单个图像数据发生变化时,整个Gallery模板都会被重新渲染。

有更好的方法吗?

是否可以限制每个步骤的范围?

我想保持db结构不变(没有规范化)。


为什么我认为这是一个问题? 首先,它根本没有意义。更实用,我有特定的事件处理程序,每当渲染图库/子图库/图像时调用(例如加载图像时淡入淡出)。一直渲染所有内容会使处理这些操作变得更加困难。

1 个答案:

答案 0 :(得分:0)

考虑r eactivity isolation

<template name="gallery">
    {{#each sub_gallery}}
        {{#isolate}}
            This is a gallery {{name_sub_gallery}}
            {{#each image}}
                {{#isolate}}
                Something {{name_image}}
                {{/isolate}}
            {{/each}}
         {{/isolate}}        
    {{/each}}
</template>

这将孤立区块的变化本地化为它们自己的行星类型,因此它们周围的一切都保持不变并且仍未被触及

您可能必须使用您的文档结构对其进行测试,因为如果您使用数组存储子项而不是带键的关联数组,则更新时可能会更改每个文档索引