广播并且不按预期工作

时间:2015-10-07 08:35:03

标签: angularjs angular-broadcast

我正在尝试从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();
    }
   });

我需要明确做些什么才能生效。

2 个答案:

答案 0 :(得分:1)

试试这个:

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

编辑: 我测试过了。它应该没有$ apply也可以工作。 请检查此链接:fiddle

答案 1 :(得分:-2)

我认为你使用了错误的方法。如果您只想将参数传递给新控制器,为什么不使用路由参数?请参阅此documentation page

末尾的示例

请注意,在您的代码中,您在广播邮件后注册了$on,因此它无法正常工作。