Javascript $locatioChangeStart多次启动
基本上,我正在尝试制作一些数组,在我的应用程序中应该有访问页面的历史记录Javascript $locatioChangeStart多次启动,javascript,angularjs,Javascript,Angularjs,基本上,我正在尝试制作一些数组,在我的应用程序中应该有访问页面的历史记录 $rootScope.$on('$locationChangeStart', function (event, next, current) { historyArray.push($location.path()); console.log("history", historyArray); }); 一开始看起来不错,我的意思是[/page1,/page2],但随后它开始将ChangeSta
$rootScope.$on('$locationChangeStart',
function (event, next, current) {
historyArray.push($location.path());
console.log("history", historyArray);
});
一开始看起来不错,我的意思是[/page1,/page2],但随后它开始将ChangeStart效果乘以,即[page1,/page2,/page3,/page3,/page4,/page4]等等
有什么办法可以预防吗
编辑。这只是一个例子,我需要$locationChangeStart用于一些ngDialog模态和其他复杂的东西,但我面临类似的问题,比如同时打开5个模态您只需添加一个条件来检查位置是否实际更改,并添加一个indexOf来确保页面不存在于数组中
$rootScope.$on('$locationChangeStart',
function (event, next, current) {
if(next !== current && historyArray.indexOf(current) === -1) {
historyArray.push($location.path());
}
}
);
您可以检查该页面是否已存在于数组中,并仅在不存在时推送。这取决于您在何处添加事件侦听器。你把它放在控制器里了吗?Umidbek,没有,把它放在服务里了。服务每次调用新服务时都会定义,所以如果这个事件监听器在服务构造函数中运行,它每次调用服务时都会将事件绑定到$rootScope。它不起作用-情况还是一样。这是否意味着其他地方存在一些“更大”的问题?