广播和不按预期工作

Broadcast and on not working as desired

我正在尝试从 1 个控制器进行广播并在另一个控制器上观察该变量,并期待在第二个控制器上进行一些更改。但是它不起作用。

下面是第一个控制器代码

$scope.gotoKBPage = function()
      {
         $location.path('/kb');
         $rootScope.$broadcast('newVar',{id: "123"});
      };

下面是第二个控制器代码,也就是/kb页面

  $scope.newPage = function()
  {
      $scope.pernotes     = true; // this makes a section visible, but not happening
  };

   $rootScope.$on('newVar', function(event, data)
   {
    if(data)
    {
        $scope.newPage();
    }
   });

我需要明确做什么才能生效吗?

我认为您使用了错误的方法。如果只想给新控制器传递一个参数,为什么不使用路由参数呢?请参阅本文末尾的示例 documentation page

请注意,在您的代码中,您是在广播消息后注册 $on,因此它不会起作用。

试试这个:

 $scope.newPage = function()
  {  
       $scope.$apply();
       $scope.pernotes     = true; // this makes a section visible, but not happening
  }

编辑: 我已经测试过了。它也应该在没有 $apply 的情况下工作。 检查此 link:fiddle