2016-08-27 18 views
1

私はknockout.jsとバインドしたいテキスト文字列をtextareaに表示していますが、編集後にそれを送信することもできます。それを達成するための適切な方法は何ですか?knockout.js改行を含むテキストエリアでhtml文字列をバインドする最も良い方法

私はHTMLバインディングを使用するとone <br/> two文字列をバインドできますが、テキストエリアに同じ文字列を表示しますが、送信後に後で処理できるようにコード化された文字列one&lt;br/&gt;twoが得られます改行が問題になります。

基本的に私は維持したいと思います:

  • 元の行は
  • 元のHTMLテキストさて、私が合格したときに

破る:両方valueを使用して

<html> 
<body> 

をし、 htmlバインディング、ノックアウトでスクリプト例外が発生する、新しいl inesは処理されません。特殊文字も同様にエンコードされます。

Content: ko.observable("&lt;html&gt; 
&lt;body&gt; 

+0

あなたがこれまで試みられてきたものをご提示ください。 –

+0

私が言ったように、私はhtmlバインディングと値バインディングを試みました。珍しいことではないので、コードを貼り付ける必要はないと思います。さらに、私は解決策がバインディング方法だけではないように感じます。 –

答えて

1

実際に値をエンコードするために、btoaを使用して、送信時にマングングが発生しないようにすることができます。次に、サーバー上でデコードするにはatobを使用します。 htmlのさまざまな処理がどのように出てくるかを見ることができる小さなデモがあります。

ko.applyBindings({stuff: ko.observable('<h1>Foo</h1>hi\nthere')});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<textarea data-bind="value:stuff"></textarea> 
 
<pre data-bind="text:stuff"></pre> 
 
<hr /> 
 
<pre data-bind="html:stuff"></pre> 
 
<hr /> 
 
<pre data-bind="text: btoa(stuff())"></pre>

関連する問題