我正在编写包括数据映射、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);
mouseout 和 click 的类似句柄。
一切正常,并且检测到每个事件。但问题是,当我通过单击转到其他部分然后返回到主页的同一部分时,$apply 函数对任何事件都不起作用。所以 $watch 也无法检测到其他控制器的变化。
我尝试在 $apply 函数中登录控制台,但是 $scope.$apply 函数没有运行,当第一次加载部分时它运行得很好。
这看起来很奇怪,知道问题可能是什么吗?提前致谢。