我从服务器解析了一堆电子邮件,并希望在网页上显示它们。我获取了它们的HTML内容,考虑使用IFrame最容易展示电子邮件原本的外观。
然而,
<iframe srcdoc="{{ email.html }}" frameborder="0"></iframe>
以下是关于AngularJS的错误信息:
“给出了以下 AngularJS 错误:”
Error: [$interpolate:interr] Can't interpolate: {{ email.html }}
Error: [$sce:unsafe] Attempting to use an unsafe value in a safe context.
我一直在寻找一种方法来实现这个功能,尝试过禁用 $sce 进行测试,但也没有起作用。这只是一个测试项目,我获取的数据是安全的,我只需要它用于 POC。
现在我在我的控制器中做了这个:
var iframeDocument = document.querySelector('#myiframe').contentWindow.document;
var content = $scope.email.html;
iframeDocument.open('text/html', 'replace');
iframeDocument.write(content);
iframeDocument.close();
这种方式可行,但如果有数据绑定的解决方案,我仍然更喜欢使用数据绑定。谢谢。
$('#myiframe').attr('srcdoc', $scope.email.html);
但这并没有真正奏效。 - Joris Ooms$scope.emailHtml = $sce.trustAsHtml($scope.email.html)
,但是没有ng-srcdoc-bind-html
,我认为这是这个难题的另一部分(请查看ng-bind-html
)。 - Matt Greer