Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
Meteor 来自客户端阵列/集合的反应式UI_Meteor - Fatal编程技术网

Meteor 来自客户端阵列/集合的反应式UI

Meteor 来自客户端阵列/集合的反应式UI,meteor,Meteor,我刚刚开始学习meteor,我想知道什么是实现MDI(多文档接口)UI的正确方法,就像meteor中jQuery窗口插件()提供的那样 我最初的想法是在会话中存储一个窗口对象数组,然后让模板循环遍历窗口列表,并相应地渲染它们 但是,这意味着每当用户打开或关闭窗口时,我都必须使用修改后的数组调用Session.set(),这将导致整个UI的完全重新呈现,可能会使用户失去当前的工作状态(除非为要使用的表单元素动态生成唯一ID) 此外,UI将支持拖放和调整大小,这将导致窗口对象的更新,但更新窗口对象不

我刚刚开始学习meteor,我想知道什么是实现MDI(多文档接口)UI的正确方法,就像meteor中jQuery窗口插件()提供的那样

我最初的想法是在会话中存储一个窗口对象数组,然后让模板循环遍历窗口列表,并相应地渲染它们

但是,这意味着每当用户打开或关闭窗口时,我都必须使用修改后的数组调用Session.set(),这将导致整个UI的完全重新呈现,可能会使用户失去当前的工作状态(除非为要使用的表单元素动态生成唯一ID)

此外,UI将支持拖放和调整大小,这将导致窗口对象的更新,但更新窗口对象不会触发反应式渲染,除非我使用windows数组再次调用Session.set,这将导致整个UI的另一次重新渲染

正确的方法是什么?使重新渲染仅限于创建/关闭/调整的窗口

谢谢您的帮助。

我将创建一个名为
Windows
的“scratchpad”集合:

Windows = new Meteor.Collection(null)
然后,您可以在此集合中存储窗口大小、位置等,但不会将其同步到服务器


或者,您可以将窗口排列作为用户对象的一部分存储在Mongo中,这意味着窗口排列将在会话之间保持(并且所有浏览器选项卡将共享相同的窗口排列)。

将信息存储到
集合中
并从中渲染?或者使用
模板。保留
?感谢您的回复。但我在另一篇文章中读到,仅客户端集合不支持插入?在这种情况下,我必须创建一个服务器端的集合,并且对于每个会话,我必须为它创建记录,而没有有效的清理方法。我将签出Template.preserve并返回给您。感谢您选中了Template.preserve。如果我的想法错了,请纠正我。。因此,我的方法是将所有窗口指定为preserve的选择器(例如div.windows),然后使用将其映射到一个函数,将其与会话变量进行比较,对吗?收藏的用途如何?对于这种情况,我可以使用仅客户端的集合吗?怎么做?谢谢。谢谢Gaelan,但主要问题是如何防止在打开/关闭/调整单个窗口大小时重新呈现整个窗口的集合。有什么想法吗?@提示从Meteor 0.8开始,只有界面的必要部分会被重新下载。如果没有任何变化,meteor不会渲染不必要的内容。