如何获取包含$ sce的对象的解包值?

时间:2014-06-19 15:36:31

标签: javascript angularjs

在我的Web应用程序中,我给了一个用angular $ sce包装的对象。在这个对象中,每个属性都有一个特殊属性$$ unwrappedTrusted但它并没有真正给我对象值。我怎么能得到信任对象属性的值?

4 个答案:

答案 0 :(得分:21)

正如@rrhrg所说,属性始于$$被视为私有且不安全使用。更好地使用valueOf $ sce服务的方法。

var trustedResource = $sce.trustAsResourceUrl("www.abcd.com/folder/image.png");
$sce.valueOf(trustedResource); // "www.abcd.com/folder/image.png"

http://jsbin.com/morixekuxi/edit?html,js,console

答案 1 :(得分:7)

您可以使用getTrustedHtml()函数。这从$$ unwrapTrustedValue获取html字符串值。

vm.user.bio = $sce.getTrustedHtml(vm.user.bio);

您可能还需要加入ngSanitize

本文中有关于此主题的更多答案: Unit testing the output of $sce.trustAsHtml in Angular

答案 2 :(得分:1)

如果我理解你的问题,你想打开(或使用?)由angular的服务$sec包裹的值。

要在html文档中使用此类值,您可以使用指令ng-bind-html

<div ng-bind-html="myWrappedValue"></div>

要打开此类值,您可以使用函数$$unwrapTrustedValue()

$sce.trustAsHtml('&copy;').$$unwrapTrustedValue() === '&copy;'

请注意以两个美元符号($$)开头的属性被视为私有,并且 NOT 应该被访问!

另见http://jsfiddle.net/rrhrg/9vzckoj8/

答案 3 :(得分:0)

我通过调用toString()函数得到每个属性的值,但我没有找到任何方法来帮助我找到对象本身。