0

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

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

4

2 回答 2

1

尝试这个:

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

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

于 2015-10-07T09:01:32.270 回答
-2

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

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

于 2015-10-07T08:48:15.960 回答