$ rootScope中的范围变量为空。$

时间:2016-03-29 12:34:21

标签: angularjs

我制作了2个控制器,一个用于实际页面,一个用于成功模式。我正在从模态控制器广播一个偶数并在页面控制器中收听偶数。我正在使用'这个'引用范围变量的当前实例。但是在$ on监听器中,每当我尝试使用scope变量时,都会发现null,因此我无法修改页面控制器变量。

在页面控制器上:

 $rootScope.$on('backToFetch', function() {
            for(var i=0; i < this.fetchUploader.documentData.length; i++) {
                this.fetchUploader.documentData[i].isSuccess = false;
                this.fetchUploader.progress = 0;
            }
            deleteFormFields()
        });

在模态控制器上:

$rootScope.$broadcast('backToFetch');

如何在$ on listener

中获取范围变量的引用

1 个答案:

答案 0 :(得分:0)

您可以将范围状态复制到event arguments,如下所示:

$rootScope.$broadcast('backToFetch', {
     scope: angular.extend($scope, {})
});

你现在可以像这样阅读它的价值:

$rootScope.$on('backToFetch', function(event, args) {
    console.log(args.scope);
});

这不会修改源控制器范围。由于一个控制器不应直接修改另一个控制器的范围,因此应通过使用事件来执行此类操作。

其次你应该只从范围中复制你需要,复制整个范围可能是一种过度的做法。