我有jsonData由HTML內容組成。我想用ng-grid渲染那個HTML。內容不會呈現,但它只顯示在正常的字符串格式。如何在ng-grid中呈現html格式的內容?
下面是plnkr
用於顯示所有代碼:
http://plnkr.co/edit/RlWyDqCUUR15dmLM7ePV?p=preview
我有jsonData由HTML內容組成。我想用ng-grid渲染那個HTML。內容不會呈現,但它只顯示在正常的字符串格式。如何在ng-grid中呈現html格式的內容?
下面是plnkr
用於顯示所有代碼:
http://plnkr.co/edit/RlWyDqCUUR15dmLM7ePV?p=preview
有幾件事會在這裏:
ng-click='show('F:/cox/main.html')'
,你可以做ng-click=\"show('F:/cox/main.html')\"
。appScope
。關於它的文檔在這裏:http://ui-grid.info/docs/#/tutorial/305_appScope在Angular中默認啓用嚴格上下文轉義(SCE),並轉義任何HTML以防止類似XSS和clickjacking的事情發生。爲了讓您的HTML顯示出來,您需要信任它,並將其綁定到HTML綁定表達式。您可以使用$sce
服務來信任HTML。只需迭代你的行並做$sce.trustAsHtml(row.firstName)
。 (您可以在這裏閱讀更多關於SCE的信息:)然後,您需要一個自定義單元格模板來綁定HTML。最簡單的一個看起來像這樣:
<div class="ui-grid-cell-contents" ng-bind-html="COL_FIELD"></div>
COL_FIELD將通過UI-Grid轉換爲您的字段的正確綁定。現在問題是你的ng-click指令沒有被編譯。您需要使用一個指令,它將採用您的自定義HTML並編譯它。你可以推出你自己的,或者使用類似這個庫的東西來爲你做:https://github.com/incuna/angular-bind-html-compile
要記住的主要事情是能夠真正相信你的HTML源。如果你不能確定,那麼採取另一種方式(即不在數據集中提供HTML)會更好。
我修改了你的plunker以顯示所有這一切合作:http://plnkr.co/edit/MgLoeGBoRTi2fF3e6pia?p=preview