$scope.$on 会导致 Angular 静默失败



问题似乎出在一个名为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

最新更新