2015-04-05 36 views
0

我想用angularjs實現我的網站中的瀏覽次數功能。Angularjs計數頁面瀏覽量並顯示它

該功能與stackoverflow問題視圖計數器相同:它是持久的。

我想攔截http請求,異步更新後端並在本地更新數據(cookie或localStorage)。

有沒有辦法做到這一點?

在此先感謝

回答

1

無論您使用的是什麼路由系統,您都可以掛接到路由更改事件並使用路由名稱向服務器發送請求,以便它可以更新計數器。這是一個使用ui-router的例子。

.run(function($rootScope, PageViews) { 
    $rootScope.$on('$stateChangeStart', function(e, toState) { 
    // add a view 
    PageViews.add(toState.name); 
    // request the total views for this state from the server 
    PageViews.get(toState.name).then(function(resp) { 
     // add 1 to the result if you want to count the current view 
     $rootScope.pageViews = resp.data + 1; 
     // let the server know another user has viewed this state 
     PageViews.add(toState.name); 
    }); 
    }); 
}) 

您可以在獲取合併/讓你每次觸發它的時候,你得到的頁面訪問量,也增加了總數在一個請求是否適合你更好的添加請求。

爲了演示的目的,PageViews服務正在保存到localStorage而不是您想要用於實際應用程序的服務器。 http://jsbin.com/fehoxifabo/1/

+1

這就是我一直在尋找的!謝謝 –

0

我想你應該只是有後端印刷上的響應瀏覽量數字,而且這個數字應該通過更新數據庫中增加每次。如果你堅持使用異步API調用來做到這一點,這裏有一個解決方法:

可以截獲每個錨點擊讓鏈接帶你去任何地方(一個jQuery例子)之前進行的異步調用:

$(window).click(function(event){ 

    if(event.target.is('a[href]')){ 

    yourAsyncFunction(); 
    window.location.href = $(event.target).attr('href'); // Use this if you want to 
                 // actually go where the anchor 
                 // takes you 
    } 

    return false;  

}); 
相關問題