问题似乎出现在名为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);
//});
答案 0 :(得分:2)
服务通常无法像控制器一样访问$rootScope
。最多,它可以将一个传递给它作为其方法的参数,或者它可以注入$rootScope
服务。
最简单的可能只是确保您在工厂/服务中注入并引用$scope
,而不是{{1}}。