Javascript 无法读取属性'$范围';未定义的
当我在angular应用程序中收到html内容时,我将其注入html文档中,但随后无法获取它。举例说明 我有下一个控制器:Javascript 无法读取属性'$范围';未定义的,javascript,angularjs,coffeescript,angularjs-scope,Javascript,Angularjs,Coffeescript,Angularjs Scope,当我在angular应用程序中收到html内容时,我将其注入html文档中,但随后无法获取它。举例说明 我有下一个控制器: class ReadCtrl constructor: (@$scope, @$rootScope, @$compile, @$sce, @$window, @webService) -> @getData() getData: -> promise = @webService.getBookText() promise.th
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>
这是因为方法中的=>
,该方法编译为:
__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
函数的第一行。因此,这个
在success
函数中是未定义的,可能是因为它是用promise调用的
另一个使用$('.br_source_container').html(@$compile(@$scope.trustedHtml)(scope))
的方法也会出现相同的错误
因此,我需要获取插入部分的DOM html。因此,问题通过
超时解决
设置范围值并期望完成摘要周期后,无法立即在控制器内运行console.log(),这就是它的工作方式。创建一个复制ProblemStillt无法做到的演示。即使是这个简化版也不行。我不太会玩咖啡…抛出错误无法初始化bookReader模块…一定是语法问题或其他原因。很好,它在plunker上工作。我不知道你想做什么…在这里工作很好,我加了一点延迟。需要一个摘要循环来重新绘制DOM
TypeError: Cannot read property '$scope' of undefined