我正在设计一个带有angular.js的网络应用程序,应用程序内部的通信是通过AJAX进行的,这意味着当应用程序请求网络资源时,网址浏览器地址永远不会改变。
例如,我的应用程序正在显示建筑信息。初始网址为'/buildings'
,首先会显示房间列表
'/buildings/rooma'
'/buildings/roomb'
每当我点击房间网址时,页面都会通过AJAX加载房间信息而不更改浏览器地址栏中的网址
但是现在要求我要为每个网址添加书签,这意味着每当我点击房间网址时,浏览器地址栏都必须显示房间网址而不是初始网址。
我怎么能在angularjs中甚至没有angularjs框架呢?
更新:
我尝试过ĽubošBeran建议的解决方案
$scope.$on('$locationChangeSuccess',function(evt, absNewUrl, absOldUrl) {
console.log('success', evt, lastRoute,$route.current);
$route.current = lastRoute;
});
但是$ route.current给了我未定义的数据。
答案 0 :(得分:1)
执行此操作的好方法是使用url pushstate。
写一个完整的工作演示太复杂了,所以你可能想谷歌。
这是一篇很好的文章:http://www.sitepoint.com/javascript-history-pushstate/
pushstate将更改浏览器中的url,因此用户可以为该页面添加书签。
您还需要收听popstate:
window.addEventListener("popstate", function(e) { console.log(arguments) })
所以当用户按下后退/前进按钮时你可以做出反应。
答案 1 :(得分:0)
好吧,我尝试使用谷歌,我发现这个AngularJS Paging with $location.path but no ngView reload