假设我有两页,第A页和第B页,分别有控制器A和控制器B.我先去第一页,然后做一个操作,它会调用$ broadcast来发送一个对象:
$rootScope.$broadcast('payData', obj)
我想在控制器B中接收此广播。但由于我没有转到页面B,控制器B的构造函数未初始化。由于我尝试在控制器B的构造函数中接收此消息,因此它永远不会收到消息。
export default class ControllerB{
constructor($scope, $rootScope){
this.scope = $scope;
this.rootScope = $rootScope
$rootScope.$on('payData', (event, obj) => {
console.log('broadcastPayData receive obj:', obj);
})
}
//some other cool staff
}
知道如何解决这个问题吗?感谢。
答案 0 :(得分:0)
如果控制器B还不存在,将对象保存到rootScope是有意义的,B一旦加载就会访问它:
$rootScope.payData = obj
然后在控制器B中使用它
export default class ControllerB{
constructor($scope, $rootScope){
this.scope = $scope;
this.rootScope = $rootScope
console.log($rootScope.payData);
}
//some other cool staff
}
如果$rootScope.payData
可能随时间发生变化,您也可以观看。