2016-11-21 57 views
0

我正在嘗試使用Angular 1遍歷json文件中的數據。數據之一包含HTML字段集和表格數據。 Angular正在剝離這一點。我怎樣才能防止這一點?防止Angular.js剝離出json文件的html格式

這是我使用的應用程序的代碼:

var app = angular.module('myApp', ['ngSanitize']); 

app.controller('crisisCtrl', function($scope, $http) { 
    $http.get("data.php").then(function(response) { 
     $scope.mkyData = response.data.records; 
    }); 
}); 

JSON文件(data.php):

{ 
    "records": [ 
    { 

     "Card": "3", 
     "Title": "Blah", 
     "Content": "<fieldset class=\"table bt-0\"><thead><tr><th>Name</th><th>Role</th><th>Number</th></tr></thead><tbody><tr><td>Bill</td><td> Director</td><td><a href=\"tel:000\">304 304-3042</a></td></tr><tr><td>Mary</td><td>Technical</td><td><a href=\"tel:000\">304 304-3042</a></td></tr><tr><td>Hannah</td><td>Engineer</td><td><a href=\"tel:000\">120 104-4042</a></td></tr></tbody></fielset>" 
     } 
     ] 
    } 

而我的HTML文件中:

<div class="container" ng-app="myApp" ng-controller="crisisCtrl"> 
    <div class="card" ng-repeat="x in myData"> 
     <div class="card-block" ng-bind-html="x.Content"></div> 
    </div> 
</div> 

這是一個調整小提琴:

http://jsfiddle.net/deCcG/2/

回答

0

<fieldset class=\"table bt-0\">是什麼原因造成的問題,如果您添加表元素的角度,然後將能夠閱讀HTML與正確的元件和顯示器被正確格式正確

var app = angular.module('myApp', ['ngSanitize']); 

app.controller('myCtrl', function($scope) { 
    $scope.page = { 
    "title": "Getting Started", 
    "content": "<fieldset class=\"table bt-0\"><table><thead><tr><th>Name </th><th>Role</th><th>Number</th></tr></thead><tbody><tr><td>Bill Williams</td><td>Widget Director</td><td><a href=\"tel:000\">+1 304 304-3042</a></td></tr><tr><td>Mary Barnhill</td><td>Technical</td><td><a href=\"tel:000\">+44 304 304-3042</a></td></tr><tr><td>Hannah Kwak</td><td>Engineer</td><td><a href=\"tel:000\">+44 120 104-4042</a></td></tr></tbody></table></fieldset>" 
    } 
}) 
+0

(*不是downvoter *)你是什麼意思的'The'和'Them'? – Igor

+0

@Igor對不起,我正在玩我的回覆和代碼,我的答案現在完成了,現在應該是有道理的。 –

1

theadtbody應用於table。您的瀏覽器可能會接受它,但Angular不支持。

嘗試只需更新您的$scope.page.content有:

"content":"<fieldset class=\"table bt-0\"><table><thead><tr><th>Name</th><th>Role</th><th>Number</th></tr></thead><tbody><tr><td>Bill Williams</td><td>Widget Director</td><td><a href=\"tel:000\">+1 304 304-3042</a></td></tr><tr><td>Mary Barnhill</td><td>Technical</td><td><a href=\"tel:000\">+44 304 304-3042</a></td></tr><tr><td>Hannah Kwak</td><td>Engineer</td><td><a href=\"tel:000\">+44 120 104-4042</a></td></tr></tbody></table></fieldset>" 

Working Fiddle here


此外,你錯過拼寫收盤</fieldset>

+1

僅供參考,即使正確拼寫'fieldset'也會被刪除。這是因爲'ng-bind-html'默認清理輸入(請參閱https://docs.angularjs.org/api/ngSanitize/service/$sanitize)和'fieldset'不是Angular的批准元素列表的一部分。您必須自定義清潔提供程序或明確信任內容(使用'$ sce.trustAsHtml') – Pace

+0

有趣的評論,感謝您的信息! :) – Mistalis

+0

此外,一個小點,但它不是角度是剝離表字段。它似乎是這樣做的jQuery/jQlite'html()'方法。只需看看https://jsfiddle.net/fcomt4td/1/ – Pace