我想用angularjs實現我的網站中的瀏覽次數功能。Angularjs計數頁面瀏覽量並顯示它
該功能與stackoverflow問題視圖計數器相同:它是持久的。
我想攔截http請求,異步更新後端並在本地更新數據(cookie或localStorage)。
有沒有辦法做到這一點?
在此先感謝
我想用angularjs實現我的網站中的瀏覽次數功能。Angularjs計數頁面瀏覽量並顯示它
該功能與stackoverflow問題視圖計數器相同:它是持久的。
我想攔截http請求,異步更新後端並在本地更新數據(cookie或localStorage)。
有沒有辦法做到這一點?
在此先感謝
無論您使用的是什麼路由系統,您都可以掛接到路由更改事件並使用路由名稱向服務器發送請求,以便它可以更新計數器。這是一個使用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/
我想你應該只是有後端印刷上的響應瀏覽量數字,而且這個數字應該通過更新數據庫中增加每次。如果你堅持使用異步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;
});
這就是我一直在尋找的!謝謝 –