当我在 Angular 应用程序中收到 html 内容时,我将其注入到 html 文档中,但随后无法获取。plunker和javascript上的最小化代码示例
我有下一个控制器:
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。