2017-07-20 1 views
0

私はこのVUEを持っている:複雑な文書テキストをVueの入力変数として使用するにはどうすればよいですか?

<script> 
var starting_point = '{{ form.content.data }}'; 
vm = new Vue({ 
    el: '#editor', 
    data: { 
    input: starting_point 
    }, 
    computed: { 
    compiledMarkdown: function() { 
     console.log(marked(this.input,{sanitize:true})); 
     return marked(this.input, { sanitize: true }); 
    } 
    }, 
    methods: { 
    update: _.debounce(function (e) { 
     this.input = e.target.value 
    }, 300) 
    } 
}); 

これはVUEでの基本的な例からである:https://vuejs.org/v2/examples/

それは短い文章のために正常に動作します。しかし、ブログの投稿が{{ form.content.data }}で始まると、もっと長くなり、emojisや改行などのカスタム項目があると、javascript変数が改行を開始します。たとえば、私はこのようなものを見ます:

var starting_point = '# fourthwhat is this? 
;o 
how bout dat. '; 

とそれは言う:2:40 Uncaught SyntaxError: Invalid or unexpected tokenの最後に?私はラインブレークや何かを考えていると思う。

だから私はこの全体を文字列にするか、何とかjavascript変数として使用するのが安全である必要があると思います。 vueがそれを理解できるようにこれを行う良い方法はありますか?

+1

[テンプレート文字列](https://developer.mozilla.org/en-US/docs/Web/ JavaScript/Reference/Template_literals)は複数行にすることができ、ほとんどの問題を回避できます。 –

+0

これは正常に動作していますか? https://jsfiddle.net/wo9ahaav/1/ – Bert

+0

テキストエリアにテキストを置いて、そこから変数を初期化することもできます(https://jsfiddle.net/wo9ahaav/2/)。 –

答えて

2

改行する理由は、改行文字をエスケープしていないためです。 すなわち、これに代えて:

var starting_point = '# fourthwhat is this? 
;o 
how bout dat. '; 

あなたのコードは次のようになります。だから、

var starting_point = '# fourthwhat is this? \ 
;o \ 
how bout dat. '; 

、あなたは外部の、動的なソースからの値下げ文字列を取得している場合は、あなたがする必要があります各改行の前に\文字を追加します。

EDIT:代わりに、あなただけ( `)バックティック演算子を使用することができます。

var starting_point = `# fourthwhat is this? 
;o 
how bout dat. `; 
関連する問題