我正试图从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
的,因此它不会工作。