Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $locatioChangeStart多次启动_Javascript_Angularjs - Fatal编程技术网

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。它不起作用-情况还是一样。这是否意味着其他地方存在一些“更大”的问题?