私はデータマップ、angularJS、Javascript を含むコードに取り組んでいます。2 つのコントローラー間でイベントを通信するために factory を使用しています。
工場は以下の通り
abc.factory('EventFactory', function () {
return { eventData: ''}; });
1つのコントローラーのホームページのパーシャルで、次のように工場データを更新しています
.on('mouseover', function () {
$scope.$apply(function () {
$scope.EventFactory.eventData = 'mouseover';
});
})
同様に、マウスアウトとクリックイベントで値を変更しています
別のコントローラーで、このような変更を検出しています
$scope.$watch('EventFactory.eventData', function (data) {
if (data == 'mouseover') {
//print on console let's say
}
}, false);
マウスアウトとクリックの同様のハンドル。
すべてが正常に機能し、すべてのイベントが検出されます。しかし問題は、クリックして別のパーシャルに移動し、ホームページの同じパーシャルに戻ったときに、$apply 関数がどのイベントでも機能しないことです。そのため、 $watch も他のコントローラーの変更を検出できません。
$apply 関数でコンソールにログオンしようとしましたが、$scope.$apply 関数が実行されません。パーシャルが最初に読み込まれたときに完全に実行されていました。
これは奇妙に思えますが、何が問題なのか分かりますか? 前もって感謝します。