AngularJS - 在$ emit上刷新应用程序的所有实例

时间:2014-03-24 21:12:24

标签: angularjs listener rootscope

我是一个angularJS应用程序。我有一个包含以下模板和控制器的页面:

<div ng-controller="ParentCtrl">
    <p>{{food}}</p>
    <div ng-controller="ChildCtrl">
        <button ng-click="onBtnClk()">{{buttonTitle}}</button>
    </div>
</div>

两个控制器:

app.controller('ParentCtrl', ParentCtrl);
ParentCtrl.$inject = ['$scope','$rootScope'];
function ParentCtrl($scope,$rootScope) {
    $rootScope.food = "hi"
    $rootScope.$on("UPDATE_PARENT", function(event,msg) {
        $rootScope.food = msg;
        console.log("Witnessed")
    });
}

app.controller('ChildCtrl', ChildCtrl);
ChildCtrl.$inject = ['$scope','$rootScope'];

function ChildCtrl($scope,$rootScope) {
    $scope.buttonTitle="Update Parent"
    $scope.onBtnClk = function() {
        $rootScope.$emit("UPDATE_PARENT","updatedyy");
        console.log($rootScope)
    };
}

基本上,我是父母和孩子的控制者;单击子控制器中的按钮会发出一条消息&#34; updatedyy&#34;。这是在父控制器中获取$ on,它将$ rootScope.food的值设置为消息值。

现在我的问题是,是否有可能在应用的所有实例中看到变量的值变化?例如,如果我在浏览器中的两个选项卡中打开了应用程序(在Tomcat服务器上运行),并且我单击了按钮 -​​ 是否可以在另一个选项卡中获取更改的值?

0 个答案:

没有答案