2017-04-17 9 views
0

レコードを表示するために角度データテーブルを使用しています。しかし、このテーブルプラグインはセル内の値を自動的に消毒するようです。角度データテーブル:テーブルセル内のデータをunsanitizeする方法

たとえば、データが "Test Record & GT"の場合、 "Test Record>"と表示されますが、私の要件では "Test Record & GT"と表示されます。これまで私は "createdCell"関数を調べ、これを修正するためのフィルタとディレクティブを作成しましたが、役に立たなかったのです。

は、ここで私は「createdCell」

.withOption('createdCell', function (cell, cellData, rowData, row, col) { 
        $(cell).html(cellData); 
       }) 

を使用したときに私のコードですが、まだそれはサニタイズデータを返します。助けてください。感謝:)

+0

あなたは$(セル)の.text(cellData)を試すことができます。代わりに? –

+0

私は昨日私のバグを修正しました。データの保存ロジックは$ sanitizeを使用することが判明しました。したがって、データベースから取り出されたデータはすでに消毒されていました。私は、角度データー化が自動衛生を行うものだと思ったので、これは私に大きな頭痛を与えました。 とにかく、私は答えとしてTirthraj Barotをマークします。 – jengfad

答えて

1

サニタイズがHTMLでない.text()

に取り組んでいます。しかし、あなたが代わりに$(cell).html(cellData)$(cell).text(cellData)をすれば、それはサニタイズされず、それによって、あなたのコードをHTMLにレンダリングされませんし、テキスト形式でレンダリングされます。私はそれがHTMLエンコーディングを防ぐことができますので、Tirthraj Barotの答えに同意するが、全体のセットアップは本当にあまり意味がありません。ここ

.html().text() http://jsfiddle.net/hossain/sUTVg/

1

の違いを表現するためのフィドルです:その後createdCell()ですcellDataはすでに<td>に設定されています。したがって、基本的にはテキストと同じようにcellDataをもう一度挿入してください。

もっと良いアプローチは、renderWidth()に「& amp; trick」を使用することです。単に&amp;で任意の&を交換する - 彼らは難読化されているので、それがないHTMLエンティティでは、彼らの特別な文字にエンコードされます。

.renderWith(function(data, type, full) { 
    return data.replace('&', '&amp;') //use /g if you have multiple &'s 
}) 

をこれはまた、あなたのlast questionのように、ディレクティブを扱うことができますが保証:

.renderWith(function(data, type, full) { 
    return "<my-directive>"+data.replace('&', '&amp;')+"</my-directive>"; 
}) 

cellDataにもう一度入力する場合は、$compileを再度入力するか、または$compile$timeoutに改行する必要があります。 &の代わりにそれは必要ありません。

はデモを参照 - >http://plnkr.co/edit/gmVAm7qvG9lXVsOgWg8K?p=preview

関連する問題