我在使用" $ rootScope时遇到了麻烦。$ broadcast"和" $ on"

时间:2015-01-29 15:28:40

标签: angularjs angularjs-scope

我有一个关于使用$ rootScope。$ broadcast和$ scope。$ on

的小说

我有一个模块和两个控制器(Controller1& Controller2)。

    var app = angular.module("app",[]);
app.controller("Controller1",function ($scope,$rootScope){
$scope.$on("msgUpdated",function (event,data){
console.log(data.message);
})
app.controller("Controller2",function ($scope,$rootScope){
$scope.msg = "Hi!";
$rootScope.$broadcast("msgUpdated",{message:msg});
});

以上是我的代码。

问题是我的Controller1的$ scope。$ on无效。 为什么?我不明白。 并且,我如何修复它以触发Controller1的$ scope。$ on?

1 个答案:

答案 0 :(得分:0)

<body ng-app="app">
    <div ng-controller="Controller1">
        <h1>{{msg1}}</h1>
        <input ng-model="test" ng-blur="sendMsg()"/>
    </div>
    <div ng-controller="Controller2">
        <h1>{{msg2}}</h1>
        <input ng-model="test" ng-blur="sendMsg()"/>
    </div>
</body>

var app = angular.module('app',[])
.controller('Controller1',['$rootScope','$scope',function($rootScope,$scope){
    $scope.msg1 = "Start";
    $scope.sendMsg = function() {
        $rootScope.$emit('msg',$scope.test);
    };
    var cleanup = $rootScope.$on('msg2', function (event,data) {
        $scope.msg1 = data;
    });

    $scope.$on('$destroy', cleanup);
}])
.controller('Controller2',['$rootScope','$scope',function($rootScope,$scope){
    $scope.msg2 = "Start2";
        $scope.sendMsg = function() {
        $rootScope.$emit('msg2',$scope.test);
    };
    var cleanup = $rootScope.$on('msg', function (event,data) {
        $scope.msg2 = data;
    });

    $scope.$on('$destroy', cleanup);
}]);

这里是小提琴手: 我总是使用$ rootScope。$ emit并清理。

http://jsfiddle.net/hbqsbLyg/