我想用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;
});
这就是我一直在寻找的!谢谢 –