2013-02-04 10 views
18

私は本当の値の代わりに(ブートストラップ)アイコンを挿入する小さい角度のフィルターを持っています。 それは動作しますが、HTMLがエンコードされている:htmlを生成する角度フィルター

var conApp = angular.module('conApp', []); 
    conApp.filter('trueIcon', function($filter){ 
    return function(booleanValue){ 
     return booleanValue ? '<i class="icon-ok"></i>' : ''; 
    } 
    }); 

は、私は、HTMLをデコードするために別のフィルタを実装する必要がありますか? これを行う「角度のある」方法がありますか?

答えて

29

htmlを表示するには、ng-bind-htmlを使用する必要があります。

<span ng-bind-html="foo | trueIcon"></span> 

これは本当にフィルターの対象ではありません。フィルタは、ビュー/ DOM自体の要素を生成するのではなく、ビューに書き込まれるデータをスクラブするためのものです。

app.directive('trueIcon', function() { 
    return { 
     restrict: 'E', 
     template: '<i ng-class="{\'icon-ok\': value, \'icon-not-okay\': !value}"></i>', 
     scope: { 
     value: '=' 
     } 
    }; 
}); 

<true-icon value="foo"></true-icon> 
+1

どちらも素晴らしいです! – Sucrenoir

+1

@bleshこの場合、+1もあなたのために:-)あなたはまた大量の質問に答えています! –

+0

ディレクティブを 'true-icon'として定義できない理由は何ですか?指示名は常にcamelcasedですか? – Sucrenoir

6

AngularJSはデフォルトで式評価の結果を消毒しています。

上記はフィルタを動作させますが、それをディレクティブにすることを検討する必要がありますか?

+0

+1私たちはどちらも基本的に同じことを言っていたので...そして私はあなたの周りにいつも会います。 –

+0

あなたのリンクはもう有効ではないと思います。 – jcollum

関連する問題