我正在处理包含datamaps,angularJS和Javascript的代码。我正在使用工厂来传达两个控制器之间的事件。
工厂如下
abc.factory('EventFactory', function () {
return { eventData: ''}; });
在一个控制器的主页部分,我正在更新工厂数据,如下所示
.on('mouseover', function () {
$scope.$apply(function () {
$scope.EventFactory.eventData = 'mouseover';
});
})
同样,我正在更改mouseout和click事件的值
在另一个控制器上,我正在检测这样的改变
$scope.$watch('EventFactory.eventData', function (data) {
if (data == 'mouseover') {
//print on console let's say
}
}, false);
鼠标输出和点击的类似句柄。
一切正常,每个事件都被检测到。但问题是,当我通过点击然后返回到主页的相同部分来转到其他部分时,$ apply函数不适用于任何事件。所以$ watch也无法检测到其他控制器的变化。
我尝试在$ apply函数中登录控制台但是,$ scope。$ apply函数没有运行,这在第一次加载部分时运行得很好。
这看起来很奇怪,任何想法可能是什么问题? 提前谢谢。