我制作了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
中获取范围变量的引用答案 0 :(得分:0)
您可以将范围状态复制到event arguments,如下所示:
$rootScope.$broadcast('backToFetch', {
scope: angular.extend($scope, {})
});
你现在可以像这样阅读它的价值:
$rootScope.$on('backToFetch', function(event, args) {
console.log(args.scope);
});
这不会修改源控制器范围。由于一个控制器不应直接修改另一个控制器的范围,因此应通过使用事件来执行此类操作。
其次你应该只从范围中复制 ,你需要,复制整个范围可能是一种过度的做法。