【问题标题】:How to get unwrapped value of object that wrapped with $sce?如何获取用 $sce 包装的对象的未包装值?
【发布时间】:2014-06-19 15:36:30
【问题描述】:

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

【问题讨论】:

  • 只需一个简单的.toString() 即可为您提供对象值/。

标签: javascript angularjs


【解决方案1】:

正如@rrhrg 所说,属性以 $$ 开头,被认为是私有的,使用起来不安全。更好地使用 $sce 服务的 valueOf 方法。

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

【讨论】:

  • 没有$sce.valueOf这样的东西。
  • 更新了我的答案。添加演示链接
  • 由于我在文档中仍然没有看到这种方法,那么看来,使用$sce.getTrustedResourceUrl 更正确。
【解决方案2】:

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

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

您可能还需要包含ngSanitize

在这篇文章中有更多关于这个主题的答案: Unit testing the output of $sce.trustAsHtml in Angular

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      如果我正确理解了您的问题,您想解开(或使用?)由 angular 的服务 $sec 包装的值。

      要在 html 文档中使用这样的值,可以使用指令 ng-bind-html

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

      要解开这样的值,您可以使用函数$$unwrapTrustedValue()

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-01
        • 1970-01-01
        • 2020-01-23
        • 1970-01-01
        相关资源
        最近更新 更多