Meteor应用程序中的元素保存错误

Meteor应用程序中的元素保存错误,meteor,Meteor,我在Meteor中做了一个watch-as-I-type实时聊天服务,但我在Meteor中内置的元素保存功能方面遇到了问题。基本上,我需要当前的聊天信息div不被更新,而其中的文本输入有焦点。本文件包含以下说明: 手写应用程序中的另一个棘手问题是元素 保存。假设用户正在向元素中键入文本, 然后重新绘制包含该元素的页面区域。 用户可能会经历一段颠簸的旅程,因为焦点是光标 位置、部分输入的文本和重音字符输入 重新创建时,状态将丢失 这是流星自动解决的另一个问题。就这样 确保每个可聚焦元素都有唯一的i

我在Meteor中做了一个watch-as-I-type实时聊天服务,但我在Meteor中内置的元素保存功能方面遇到了问题。基本上,我需要当前的聊天信息div不被更新,而其中的文本输入有焦点。本文件包含以下说明:

手写应用程序中的另一个棘手问题是元素 保存。假设用户正在向元素中键入文本, 然后重新绘制包含该元素的页面区域。 用户可能会经历一段颠簸的旅程,因为焦点是光标 位置、部分输入的文本和重音字符输入 重新创建时,状态将丢失

这是流星自动解决的另一个问题。就这样 确保每个可聚焦元素都有唯一的id,或者 在具有id的最近父级中具有唯一的名称。 Meteor将保留这些元素,即使它们的封闭模板 已重新提交,但仍将更新其子项并复制到任何 属性更改

按照这些说明,我为输入字段设置了一个唯一的id,以确保在输入字段时不会重新渲染它。但现在我面临以下两个问题:

其他人的聊天信息会在键入时更新,但此更新会在我键入自己的信息时暂停。一旦我停止键入(即使我的输入字段有焦点),他们的消息就会再次开始更新。

创建新邮件并插入其div时,即使其输入字段具有焦点,“我的邮件”也会更新/重新呈现。这会导致它突然失去焦点。

您可以在同一聊天室中的两台不同的计算机/用户上测试这一点

这是流星代码中的错误,还是我自己的错误?我怎么知道

编辑:

啊,我想我找到了第一个问题的原因:

Meteor通常会批量处理任何需要的更新,并只执行它们 当代码未运行时。这样,就可以确保DOM 不会从你下面变出来。有时你想要相反的结果 行为。例如,如果您刚刚在 数据库,您可能希望强制DOM更新,以便可以找到 新元素使用类似jQuery的库。那样的话,打电话 Meteor.flush立即更新DOM


我猜我的代码是在用户键入时运行的,所以DOM没有被更新。我将尝试使用Meteor.flush来修复它。第二个问题是什么?

第一个问题的原因是Meteor在使用任何方法时都会冻结对本地数据库缓存的所有更改。Meteor 0.5.1对此进行了改进,只冻结对本地修改的文档的更改。我怀疑流星0.5.1解决了这个问题。有关更多信息,请参阅

第二个问题可能由Meteor 0.4.2中添加的
preserve inputs
包解决,但如果没有更多细节,很难确定


我很想知道你的问题是否仍然存在于当前版本的Meteor中

你能发布复制这个问题的最小可能的meteor应用程序吗?