我正在尝试从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();
}
});
我需要明确做些什么才能生效。
答案 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
,因此它无法正常工作。