广播和不按预期工作
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
我正在尝试从 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