我必须渲染一个字符串(item.tabs.review.content),使用$ sce.trustAsHtml将其解析为HTML。
我遇到的主要问题是字符串中是对象对象(item.tabs.review.images)中数组的引用。
.material(ng-bind-html='item.tabs.review.content')
我遇到的问题是,一旦在浏览器中呈现HTML,双花括号就会被忽略而且没有被对象填充?
<h1>TEsting</h1>
<img ng-src='data{{item.tabs.review.images[0].filetype}};base64{{item.tabs.review.images[0].base64}}'>
添加了一个plunker。 http://plnkr.co/edit/Jkrx3SxNjWmHPQnKbnFY?p=preview
答案 0 :(得分:2)
我建议使用$parse
首先使用值播放的create指令,使用$parse
scope
将赋予指令属性中提供的范围变量的值。然后unescape html
将html entity
替换为html标记,为此您应该使用我添加了答案的unescapeHTML
函数。然后使用$interpolate
获取{{}}
内插内容的值将为您提供src
。 $sce.parseHtml
清理html内容。
<强>标记强>
.material(bind-img='item.tabs.review.content')
<强>指令强>
angular.module('app').directive('bindImg', function($parse, $interpolate, $sce) {
return {
link: function(scope, element, attrs) {
var parsed = $parse(attrs.bindImg)(scope)
parsed = unescapeHTML(parsed)
var html = $interpolate(parsed)(scope)
element.html($sce.trustAsHtml(html));
}
}
})
//unescape html
function unescapeHTML(escapedHTML) {
return escapedHTML.replace(/{/g,'{').replace(/}/g,'}');
}