当我在角度应用程序中收到html内容时,我将其注入到html文档中,但后来无法获取它。示例minimized code on 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,然后绑定到视图:
<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
因为方法中的=>
,编译为:
__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。