Angular $广播问题

时间:2016-09-22 09:08:58

标签: angularjs broadcast

假设我有两页,第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
}

知道如何解决这个问题吗?感谢。

1 个答案:

答案 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可能随时间发生变化,您也可以观看。