1

当我在 Angular 应用程序中收到 html 内容时,我将其注入到 html 文档中,但随后无法获取。plunkerjavascript上的最小化代码示例

我有下一个控制器:

class ReadCtrl

  constructor: (@$scope, @$rootScope, @$compile, @$sce, @$window, @webService) ->
    @getData()

  getData: ->
    promise = @webService.getBookText()
    promise.then @success, @error

  success: (response) =>
    @$scope.html = response.data
    @$scope.trustedHtml = @$sce.trustAsHtml(@$scope.html)
    console.log $('.book_contents').first().children()

ReadCtrl.$inject = ["$scope", "$rootScope", "$compile", '$sce', "$window", "webService"]
angular.module("bookReader").controller "ReadCtrl", ReadCtrl

方法成功将html保存到变量trustedHtml,然后绑定到view:

<div class="br_container">
  <div class="br_source_container" ng-bind-html="trustedHtml">
  </div>
</div>

内容显示,但这console.log $('.book_contents').first().children()有零元素。当我尝试插入类似@$rootScope.$digest()错误抛出的内容时:

Error: [$rootScope:inprog] $digest already in progress

那是因为=>in 方法,它编译为:

  __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
  this.success = __bind(this.success, this);

因此,如果我更改=>->还有另一个错误:

 TypeError: Cannot read property '$scope' of undefined

success函数的第一行。所以this在函数中是未定义的success,可能是因为它是用 promise 调用的。

另一种方法$('.br_source_container').html(@$compile(@$scope.trustedHtml)(scope))发生相同的错误。

所以,我需要获取插入部分的 DOM html。

4

1 回答 1

0

所以,问题解决了,timeout尊重charlietfl 这是怎么回事

于 2013-11-17T04:29:55.030 回答