2017-01-13 3 views
0

Итак, у меня есть блок предоставленного пользователем текста, который я вынимаю из CMS. Тем не менее, в этой строке есть простая ', которая взрывает всю строку и возвращает ошибку. Я пытаюсь найти решение, позволяющее Vue отключаться от этого, и я ударил стену. Хотя у меня такое чувство, что это что-то неловкое. Вот код:Как обрабатывать данные пользователя в vue.js?

<span v-html="sidebarContent"></span> 

<script> 
    var app = new Vue({ 
    el: '#app', 
    data: { 
     // the content below is a representation of what is spit out by a 
     // server-side rendered variable "@Html.Raw(@Model.Element("BodyCopy").Value)" 
     sidebarContent: '<p>This is example text of what's being returned.</p>', 
    }, 
    }) 
</script> 

Нарушитель вопрос, как представляется, «что» - и, в частности апостроф 'в слове. Пользователи часто будут возвращать полные предложения, где эти апострофы будут появляться довольно часто, и поэтому данные должны иметь возможность правильно их обрабатывать. Любые идеи, как это сделать?

Также ошибка возвращается является: "Uncaught SyntaxError: Неожиданный идентификатор"

ответ

1

Либо использовать двойные кавычки, или бежать вашу строку правильно

sidebarContent: '<p>This is example text of what\'s being returned.</p>',

+0

Как я и думал - ошеломляюще очевидна. Двойные кавычки работали шармом. Экранирование строки было невозможно, поскольку я не могу попросить наших пользователей CMS избежать их содержимого. –

+0

Что происходит, если ваши пользователи вводят «? – djones

+0

Хороший вопрос! (Каламбур) Я только что протестировал его, и, похоже, он отлично выглядит. –

0

Итак, как @georaldc указал, я был пытаясь решить эту проблему неправильно. Проблема была не в Vue, а при использовании бритвы.

Решение, как оказалось, заключалось в использовании HttpUtility.JavscriptStringEncode на моем бритвенном коде. Вот значение данных я должен был в том числе:

sidebarContent: '@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.Element("BodyCopy").Value))', 

Следующая нить была также полезна в решении этого: How to elegantly escape single and double quotes when passing C# string to javascript