问题似乎出在一个名为EventFactory
的工厂中。工厂中的两个说法是问题所在。它们是:
$scope.$on('event:updateStuff', function (event, data) {
myObj = data;
});
$scope.$on('event:updateOtherStuff', function (event, data) {
myArray.push(data);
});
这些语句以前工作正常,现在我无法呈现页面,除非我注释掉整个$scope.$on
。自从上次成功运行应用程序以来,我没有进行任何代码更改,因此此行为非常出乎意料。控制台上不显示错误消息。
在注释掉内部语句的同时恢复$scope.$on
并不能解决问题。我已经将它们注释掉了,但页面仍然无法呈现。
这会导致页面失败:
$scope.$on('event:updateStuff', function (event, data) {
myObj = data;
});
$scope.$on('event:updateOtherStuff', function (event, data) {
myArray.push(data);
});
这也会导致页面失败:
$scope.$on('event:updateStuff', function (event, data) {
/*myObj = data;*/
});
$scope.$on('event:updateOtherStuff', function (event, data) {
/*myArray.push(data);*/
});
只有在注释掉整个$scope.$on
后,页面才会加载:
//$scope.$on('event:updateStuff', function (event, data) {
//myObj = data;
//});
//$scope.$on('event:updateOtherStuff', function (event, data) {
//myArray.push(data);
//});
服务通常不像控制器那样访问$scope
。充其量,它可以将一个作为参数传递给它的方法,或者它可以注入$rootScope
服务。
最简单的方法可能只是确保您在工厂/服务中注入并引用$rootScope
,而不是$scope
。