$ scope。$ on导致Angular无声地失败

时间:2017-01-23 22:07:21

标签: javascript angularjs

问题似乎出现在名为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);
        //});

1 个答案:

答案 0 :(得分:2)

服务通常无法像控制器一样访问$rootScope。最多,它可以将一个传递给它作为其方法的参数,或者它可以注入$rootScope服务。

最简单的可能只是确保您在工厂/服务中注入并引用$scope,而不是{{1}}。