2014-10-07 7 views
1

У меня есть приложение Meteor 0.8.3 с шаблоном:В Meteor, как мне пометить текст, введенный пользователем, перед его отображением?

<template name="example"> 
    Description: {{desc}} 
</template> 

и JavaScript:

Template.example.desc = function(){ 
    return Session.get("desc"); 
} 

где поставил пользователю сеанса desc.

Я хочу немного пометить текст перед его отображением, например. заменив возврат каретки на <br> и добавив несколько разрывов слов (html-код &#8203;).

Я считаю, что я мог бы сделать это с помощью некоторых регулярных выражений замены в Template.example.desc и тройных скобках {{{desc}}} в шаблоне - однако, это открывает двери для ввода пользователя своего собственного HTML в строку, которая является небезопасной. Поэтому я хочу, чтобы Метеор сначала сделал строку безопасной, и только затем применил мою разметку.

Как это сделать? Благодаря!

+0

Hi @Racing Головастик, я тот парень, который спросил вас о Leaderboard - Угловое мнение о вашем блоге. И да, в конце концов, я построил все с Метером :) мир маленький. – Anzel

ответ

1

{{{desc}}} - это путь. Я не вижу в этом ошибки безопасности, так как вы можете только изменить свою собственную сессию «desc». Если вы говорите о переменной, которая сохраняется в базе данных и отображается всем пользователям, более подходящей будет проверка на стороне сервера или перенос переменной с вашей разметкой перед отправкой обратно на клиентскую сторону.

+0

Да, маленький мир! Спасибо за Ваш ответ. Да, на самом деле я действительно говорю о переменной из базы данных - можете ли вы рассказать о том, как вы будете делать чек? Почему вы предлагаете сделать серверную проверку? Теперь я думаю, что функция escape-доступа на стороне клиента, такая как http://stackoverflow.com/questions/1219860/html-encoding-in-javascript-jquery, будет работать в 'Template.example.desc' ... –

+0

Я скоро ложиться спать, поэтому завтра я напишу код. но во-первых, мне нужно четкое понимание того, что вы собираетесь достичь. Собираетесь ли вы сохранить строку RAW в базе данных и просто хотите обернуть ее разметкой на шаблоне или хотите сохранить строку разметки в базе данных? – Anzel

+0

Привет Анзель, да, у меня есть необработанная строка в базе данных. Теперь я реализовал решение, в котором html явно экранирован на клиенте (например, с использованием вышеупомянутого решения stackoverflow), а затем я его помечаю, а затем показываю его с тройными фигурными скобками. Я только что написал это как отдельное сообщение в блоге с моим фактическим прецедентом (предотвращая слишком широкое использование столбцов таблицы): http://racingtadpole.com/blog/tables-without-layout-fixed/. Спасибо, что указал мне в правильном направлении! –