2016-08-11 7 views
0

ブートストラップテーブルにテキストを表示します。お互いの下のすべてのリンクを表示するには、<br/>タグが必要なため、テキストをHTMLとして解析する必要があります。私のコードでthis Plunkerを参照してください。
私は既定のng-bindディレクティブと非推奨のng-bind-htmlを使用しましたが、テキストはプレーンテキストとして表示されるか、まったく表示されません。
あなたは、HTMLとして解析されたテキストを表示する方法を教えてもらえますか?AngularJSは、ブートストラップテーブルのテキストをHTMLとして解析します。

ここに私のHTMLテーブルのコード:

<table class="table"> 
    <thead> 
    <tr> 
     <th>Method</th> 
     <th>$scope.other</th> 
     <th>$scope.links</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td>ng-bind</td> 
     <td>{{other}}</td> 
     <td>{{links}}</td> 
    </tr> 
    <tr> 
     <td>ng-bind-html</td> 
     <td ng-bind-html="other"></td> 
     <td ng-bind-html="links"></td> 
    </tr> 
    </tbody> 
</table> 

マッチングコントローラ:

app.controller('TestController', function($scope){ 
    $scope.links = 'https://www.google.com <br/> https://angularjs.org/ <br/> \ 
        https://www.google.com <br/> https://angularjs.org/ <br/> \ 
        https://www.google.com <br/> https://angularjs.org/ <br/>'; 

    $scope.other = "sample Text"; 
}); 

答えて

0

HTMLをテンプレートに注入は、デフォルトでは安全ではない、あなたは、信頼できるとして、それをマークする必要があります。

app.controller('TestController', function($scope, $sce){ 
    $scope.links = $sce.trustAsHtml('https://www.google.com <br/> https://angularjs.org/ <br/> \ 
       https://www.google.com <br/> https://angularjs.org/ <br/> \ 
       https://www.google.com <br/> https://angularjs.org/ <br/>'); 

    $scope.other = "sample Text"; 
}); 

HTMLを直接注入する必要がありますか?リンクのマップ/リストを持ち、ng-repeatを使ってそれらをテンプレートにレンダリングすることができます。

+0

を示しています。表示するデータが単純な文字列か配列かどうかをテストする必要があります – JohnDizzle

+0

@JohnDizzle [このように](https://plnkr.co/edit/3ZTN8P3yOfjVpYU46Jdk?p=preview)?または、配列の配列を持つことができ、単純に別のネストされたng-repeatを追加することができます。 – kudlajz

+0

アイデアはよく見えますが、私のデータは文字列と配列を含む単一のオブジェクトにあるので、最初に次の属性がどのデータ型かを判断する必要があります。 HTMLテンプレートのデータ型を判断する方法が必要です – JohnDizzle

0

Uはサニタイズモジュールを使用する必要があります:https://docs.angularjs.org/api/ngSanitize/service/ $はあなたが目的のようなもののためにng-bind-htmlng-bind-html-unsafeを使用することができます

app.controller('TestController', function($scope, $sce){ 
    $scope.links = $sce.trustAsHtml('https://www.google.com <br/> https://angularjs.org/ <br/> \ 
       https://www.google.com <br/> https://angularjs.org/ <br/> \ 
       https://www.google.com <br/> https://angularjs.org/ <br/>'); 

    $scope.other = "sample Text"; 
}); 
0

をサニタイズ。

の例は、私は配列にすべてのデータをマップしようとしましたが、私はそれを表示する方法見当もつかないhere

関連する問題