Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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 热代码推送后如何保留文本输入值_Meteor - Fatal编程技术网

Meteor 热代码推送后如何保留文本输入值

Meteor 热代码推送后如何保留文本输入值,meteor,Meteor,我的Meteor应用程序需要用户在文本区域中输入大量文本。如果在用户输入文本时发生热代码推送,页面将刷新,用户将丢失工作 要重现这种行为: 创建一个新的流星应用程序 在html中添加文本输入 运行应用程序 在文本字段中键入内容;及 通过调整js或html并保存,触发热代码刷新 热代码刷新将删除您在文本输入中输入的任何内容 有没有办法避免这种情况发生?有人对黑客或解决方法有什么建议吗 会话在HCR期间保留,因此您可以尝试将文本字段与会话变量同步。例如: <template name="t

我的Meteor应用程序需要用户在文本区域中输入大量文本。如果在用户输入文本时发生热代码推送,页面将刷新,用户将丢失工作

要重现这种行为:

  • 创建一个新的流星应用程序
  • 在html中添加文本输入
  • 运行应用程序
  • 在文本字段中键入内容;及
  • 通过调整js或html并保存,触发热代码刷新
热代码刷新将删除您在文本输入中输入的任何内容


有没有办法避免这种情况发生?有人对黑客或解决方法有什么建议吗

会话在HCR期间保留,因此您可以尝试将文本字段与会话变量同步。例如:

<template name="textArea">
  <textarea>{{textAreaValue}}</textarea>
</template>

Template.textArea.helpers({
  textAreaValue: function () {
    return Session.get("textAreaValue") || "";
  }
});

Template.textArea.events({
  "input textarea": function (evt) {
    Session.set("textAreaValue", evt.currentTarget.value);
  }
});
尽管这样,您将无法使用
Session.set(“textAreaValue”,…)更新文本区域。

您可以使用类似的方法或编写自己的解决方案,并使用相关的:
  textAreaValue: function () {
    return Deps.nonreactive(function() {
      return Session.get("textAreaValue") || "";
    });
  }