广播和开关不能正常工作



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

是否需要明确地做些什么才能使其生效

试试这个:

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

编辑:我已经测试过了。没有$apply也可以工作。查看此链接:fiddle

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

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

相关内容

  • 没有找到相关文章

最新更新