在 AngularJS 中降价到 HTML

Markdown to HTML in AngularJS

我正在使用 Contentful API 来提取一些内容。它作为 json 对象到达我的 Node 服务器,后者将它传递到我的 Angular 前端。 json 对象中的内容包含未处理的降价文本。

例如 Angular 调用可能如下所示:

var id = "asdf76f7g68sd7g";
$http.get("/api/article/" + id).then(function(res){
  $scope.article = res.data;
});

$scope.article 的对象看起来类似于:

$scope.article = {
  title: "Some title",
  content: "Lorem ipsum [dolor](http://google.com) sit amet, consectetur adipiscing elit. Integer iaculis turpis ut enim eleifend venenatis. Proin nec ante quis nulla porta finibus. Suspendisse at [mauris](http://google.com) nisi."
};

在我的 HTML 中,我会像这样显示内容:

<p>{{article.title}}</p>
<p>{{article.content}}</p>

这里的问题是降价未转换为 HTML 并按照您在对象中看到的那样呈现。如何将任何降价转换为 HTML 并呈现结果?

最简单的方法是找到可以呈现 Markdown 的 Angular 指令。

一个简单的 Google 搜索显示 https://github.com/btford/angular-markdown-directive。那应该可以解决您的问题。

您可以使用 markdown-js 这样的库。然后在获取时处理它(注意你必须注入 $sce 因为 angular 默认情况下不允许打印出来 HTML 因为安全问题):

var id = "asdf76f7g68sd7g";
$http.get("/api/article/" + id).then(function(res){
  var article = res.data;
  article.content = $sce.trustAsHtml(markdown.toHTML(article.content));
  $scope.article = article;
});

在您看来:

<div ng-bind-html="article.content"></div>