从$ rootScope内部更改$ scope并没有得到反映

时间:2016-02-10 09:53:11

标签: angularjs

我正在尝试按此Plunker

显示一个按钮
<div ng-show="showbtn"><button class="fix btn btn-success" ng-click="top()">To the top</button></div>

在滚动事件中,我进行了$rootScope.$emit调用,它也被触发,但不确定为什么$scope值在mainCtrl控制器$范围内没有被更改。 $scope内的$rootScope是不同的?

1 个答案:

答案 0 :(得分:2)

事件处理程序(传递给$rootScope.$on的函数)在Angular的正常摘要周期之外运行,因此您需要告诉父作用域某些内容已更改。您可以使用$apply执行此操作:

$rootScope.$on('scrolled',function(event,data){
  $scope.$apply(function () {
    $scope.showbtn = data.message;
  });
});

这里是updated Plunker