首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭内容可编辑区域的反应性(Meteor)

关闭内容可编辑区域的反应性(Meteor)
EN

Stack Overflow用户
提问于 2015-02-08 09:33:03
回答 2查看 203关注 0票数 3

我知道你可以在获取集合时关闭reactive: false的反应性。例如,在一个可满足的区域内,如何在集合字段中实现同样的目的?示例:

代码语言:javascript
复制
Template.documentPage.events({
  'input .document-input': (function(e) {
    e.preventDefault();

    content = $(e.target).html();
    Documents.update(this._id, {
      $set: {
        content: content
      }
    });
   }
});

<template name="documentPage">
  <div class='document-input' contenteditable='true'>{{{content}}}</div>
</template>
EN

回答 2

Stack Overflow用户

发布于 2015-02-10 01:18:58

要转换辅助函数或其他反应函数的反应性,请使用Tracker.nonreactive(fn)包装您的函数。请参阅:http://docs.meteor.com/#/full/tracker_nonreactive

票数 1
EN

Stack Overflow用户

发布于 2016-08-04 22:34:27

您可以将反应式数据设置为属性,并将其移动到onRendered中的html

代码语言:javascript
复制
<template name="documentPage">
  <div class='document-input' contenteditable='true' data-content='{{content}}'></div>
</template>

Template.documentPage.onRendered(function () {
  var doc = this.find(".document-input");
  doc.innerHTML = doc.dataset.content;
});

这样,将通过blaze更新data-content属性,而不是元素的文本。

安全说明:我更改了模板,使用{{content}}而不是{{{content}}},这样它就可以用meteor进行转义,但使用了doc.innerHTML,所以元素中的内容将是“未转义的”。任何时候,当您从用户输入呈现html时,都应该确保您对其进行了杀毒,这样您就不会在站点中打开xss漏洞。

另一种方法是使用像https://github.com/UziTech/jquery.toTextarea.js这样的库将div的可编辑内容更改为文本,并使用doc.textContent代替doc.innerHTML来消除任何使用xss的可能性

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28389603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档