无法读取未定义的属性'$ scope'

时间:2013-11-15 05:22:06

标签: javascript angularjs coffeescript angularjs-scope

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

<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函数的第一行。所以thissuccess函数中是未定义的,也许是因为它是带有promise的。

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

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

1 个答案:

答案 0 :(得分:0)

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