基本上,我正在尝试制作一些数组,该数组应具有我的应用程序中访问过的页面的历史记录。

$rootScope.$on('$locationChangeStart',
    function (event, next, current) {

    historyArray.push($location.path());

    console.log("history", historyArray);
});


一开始看起来还不错,我的意思是[“ / page1”,“ / page2”],但是随后它开始将“ ChangeStart”效果乘以即[“ / page1”,“ / page2”,“ / page3”, “ / page3”,“ / page4”,“ / page4”,“ / page4”]等。

任何想法如何预防呢?

编辑。这只是一个例子,我需要$ locationChangeStart用于某些ngDialog模态和其他复杂的东西,但是我面临着类似的缝合(例如同时打开5个模态)

最佳答案

您只需添加一个条件来检查位置是否实际更改,然后添加一个indexOf即可确保该页面在数组中不存在。

$rootScope.$on('$locationChangeStart',
    function (event, next, current) {
        if(next !== current && historyArray.indexOf(current) === -1) {
            historyArray.push($location.path());
        }
    }
);

关于javascript - $ locatioChangeStart多次触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25262499/

10-09 23:42