2013-07-02 24 views
27

knockout.jsを使用すると、段落<p>要素のテキスト属性にバインドされたテキストに改行を含めるにはどうすればいいですか?段落テキストのKnockout.jsカーラッジリターン

私のViewModelでは、ビューの<p>にバインドされたテキストの文字列を生成しました。私は改行でブラウザが表示する文字列にキャリッジリターンを含めたいと思います。

文字列に<br />またはEnvironment.NewLineを含めても機能していないようです。

答えて

15

html bindingを使用できます。

JS:

function AppViewModel() { 
    this.firstName = "Bert<br\>Test"; 
    this.lastName = "Bertington"; 
} 

// Activates knockout.js 
ko.applyBindings(new AppViewModel()); 

ビュー:

<p>First name: <strong data-bind="html: firstName">todo</strong></p> 
<p>Last name: <strong>todo</strong></p> 

See fiddle

+1

ありがとうございます。パーフェクト – Martin

+0

これを行う場合は、まだHTMLエンコードされていないコンテンツをエンコードすることを確認してください – bdukes

+0

ありがとうございます、データバインド= "html:..."は私のために何をしたのですか? – SeanKPS

52

要素にCSSプロパティを設定する必要があります。 white-space: pre-wrap

<p style="white-space: pre-wrap">First name: <strong data-bind="text: firstName">todo</strong></p> 
<p>Last name: <strong>todo</strong></p> 

function AppViewModel() { 
    this.firstName = "Bert" + " \n " + "Test"; 
    this.lastName = "Bertington"; 
} 

// Activates knockout.js 
ko.applyBindings(new AppViewModel()); 

コードが機能します。 \n

+5

JavaScriptがHTMLに特有のHTML文字がないため、このソリューションははるかに優れていると思います。 – Samuel

+0

特にデータがユーザー編集のデータの場合は、HTMLソリューションでは完全に不要なWYSIWYGエディタを使用する必要があります。 –

+0

ありがとう! –

0

また、あなたのバインディングを取得するためにスパンを使用することができ、その後、HTMLはいつものようになります。