2012-08-14 65 views

回答

6

这是故意行为流星。在文档中:

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

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

流星不会更新<input><textarea>具有焦点,因为在许多情况下,如果他们试图进入的东西,这将是极大干扰用户(想象一下你在现场时,输入了一个段落突然被覆盖)。但是,这意味着用户在与其他用户发生“碰撞”或其他反应性更改时不会获得更新。如果你想覆盖这种行为,你可能会隐藏<div>或js数据元素,你可以用它来为你的应用程序进行适当的更新(也许标志着有新值或简单地覆盖它)。这种冲突不是微不足道的,可能需要根据具体情况采取不同的行为。 Meteor未来的版本可能会给我们一些工具来处理这个问题。有关更多背景信息,请参阅this post

+0

编辑添加一个链接到一些额外的信息的前景,更多类似Google Wave的行为。 – rdickert 2012-08-23 17:48:22

0

<textarea>{{some_val}}</textarea>工作正常,我都当现场的收益和失去焦点。

我希望你在做什么,

Template.mytemplate.some_val = "Whatever you want to write";

Template.mytemplate.some_val = function() { 
    var someValue = "Whatever you want to write"; // Can also get from DB 
    return someValue; 
} 

与模板,

<template name="mytemplate"> 
    <textarea>{{some_val}}</textarea> 
</template> 
相关问题