2017-07-06 117 views
0

v-modelで特殊文字をエスケープできますか?私はデータコールから受け取ったテキストを編集する問題が発生しています。 'これは' &#39と表示されていますが、編集時にこのテキストボックスに '&#39'と表示されています。私はv-htmlについて知っていますが、v-modelでそれを使用できますか?そうでない場合、別のオプションは何ですか?Vuejs v-model特殊文字

+0

あなたがHTMLエンコードされたデータを取得し、テキストエリアで使用するために、プレーンテキストに変換したいと言っていますか? –

+0

はい - 返されたデータを編集できるようにする必要があります。私の現在の解決策では、v-modelを使用して、 'これは' &'#39;これが表示されて '&#39'がユーザーに混乱を引き起こし、更新されたテキスト '&'#39;'を保存しているときに保存されます。 – slugabed

答えて

0

v-modelv-textのように動作し、すべての文字を表示します。v-htmlは、htmlコードを表示させます。 ソースファイル/ debugger/responseに "this"が表示された場合は、理由がエンコードであるか、json-textを表示しようとしている可能性があります。 'はNCR dezです。文字の場合は'です。

v-modelは、自動双方向バインディングを提供します。必要がない場合は、他のディレクティブのいずれかを使用できます。

+0

ユーザーが更新して保存できるように、私はv-modelを使用できる必要があります。 – slugabed

+0

あなたの "this"がutf-8に到着したことを確認しましたか? – Reiner

+0

私はチェックデータフォーマットを倍増し、utf-8ではありませんでした。私はプロバイダからの応答を変更することができ、問題は解決されました。 – slugabed

0

問題は、エンコードされたテキストがあり、プレーンテキストに変換する必要があることです。適切なHTMLの場合は、スクラッチdivのinnerHTMLとして設定し、そのdivからtextContentを抽出します。私はそれを行うために私のスニペットで少しヘルパー機能を作成しました。

テキストに余分な引用符があるように見えます。そのため、データを整頓するために必要なデータのマッサージがいくつかあるかもしれませんが、アプローチはまだ私がここに示しています。それをunpolluteして、編集したい変数に感染していないテキストを割り当てます。

const scratchDiv = document.createElement('div'); 
 
function toPlainText(html) { 
 
    scratchDiv.innerHTML = html; 
 
    return scratchDiv.textContent; 
 
} 
 

 
new Vue({ 
 
    el: '#app', 
 
    data: { 
 
    plainText: '' 
 
    }, 
 
    mounted() { 
 
    // fetching code-polluted text 
 
    this.plainText = toPlainText("'this&#39"); 
 
    } 
 
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js"></script> 
 
<div id="app"> 
 
    <textarea> 
 
    {{plainText}} 
 
    </textarea> 
 
</div>