在 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>
我正在使用 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>