【发布时间】:2014-06-19 15:36:30
【问题描述】:
在我的 Web 应用程序中,我给出了一个用 angular $sce 包装的对象。在这个对象中,每个属性都有一个特殊的属性 $$unwrappedTrusted 但它并没有真正给我对象值。我怎样才能获得可信值对象属性?
【问题讨论】:
-
只需一个简单的
.toString()即可为您提供对象值/。
标签: javascript angularjs
在我的 Web 应用程序中,我给出了一个用 angular $sce 包装的对象。在这个对象中,每个属性都有一个特殊的属性 $$unwrappedTrusted 但它并没有真正给我对象值。我怎样才能获得可信值对象属性?
【问题讨论】:
.toString() 即可为您提供对象值/。
标签: javascript angularjs
正如@rrhrg 所说,属性以 $$ 开头,被认为是私有的,使用起来不安全。更好地使用 $sce 服务的 valueOf 方法。
var trustedResource = $sce.trustAsResourceUrl("www.abcd.com/folder/image.png");
$sce.valueOf(trustedResource); // "www.abcd.com/folder/image.png"
【讨论】:
$sce.valueOf这样的东西。
$sce.getTrustedResourceUrl 更正确。
您可以使用 getTrustedHtml() 函数。这会从 $$unwrapTrustedValue 获取 html 字符串值。
vm.user.bio = $sce.getTrustedHtml(vm.user.bio);
您可能还需要包含ngSanitize。
在这篇文章中有更多关于这个主题的答案: Unit testing the output of $sce.trustAsHtml in Angular
【讨论】:
我通过调用 toString() 函数来获取每个属性的值,但我没有找到任何可以帮助我找到对象本身的方法。
【讨论】:
如果我正确理解了您的问题,您想解开(或使用?)由 angular 的服务 $sec 包装的值。
要在 html 文档中使用这样的值,可以使用指令 ng-bind-html。
<div ng-bind-html="myWrappedValue"></div>
要解开这样的值,您可以使用函数$$unwrapTrustedValue()。
$sce.trustAsHtml('©').$$unwrapTrustedValue() === '©'
请注意以两个美元符号 ($$) 开头的属性被视为私有属性,不应不访问!
【讨论】: