0

我正在编写包括数据映射、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 函数没有运行,当第一次加载部分时它运行得很好。

这看起来很奇怪,知道问题可能是什么吗?提前致谢。

4

0 回答 0