$ locatioChangeStart多次触发

时间:2014-08-12 10:54:58

标签: javascript angularjs

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

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

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

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

在开头它看起来没问题,我的意思是[“/ page1”,“/ page2”],但随后它开始将“ChangeStart”效果乘以ie [“/ page1”,“/ page2”,“/ page3“,”/ page3“,”/ page4“,”/ page4“,”/ page4“]等。

任何想法如何预防?

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

1 个答案:

答案 0 :(得分:0)

您可以添加条件以检查位置是否实际更改,并添加indexOf以确保页面中不存在该页面。

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