我的移动优先应用程序需要可点击的表格行进行导航,它通过
解决<tr ng-repeat="foo in bar" ng-click="go_to(foo.id)" >
go_to()函数在控制器范围内定义,如:
$scope.go_to = function (in_id) {
var url = "#details/" + in_id;
window.location.href = url;
};
#details通过ngRoute路由:
.when('/details/:id', {
templateUrl : 'foo.html',
controller : 'fooController'
})
表行调用go_to函数很好,但它在历史记录中将#details / x页面放置两次,其中第一次点击是一个常量重定向到下一个,所以后退按钮变得无用。
IE:我们有两页; Main和Sub,其中Main具有ng-click(go_to)功能。在单击ng-click之前,浏览器历史记录如下所示[Main]。单击它后,它看起来像[Main,Sub,Sub]。无论多少次,都会让你回到Sub。是否有任何连贯的解释为什么应用程序以这种方式运行?其他解决方案也非常受欢迎
答案 0 :(得分:4)
由于您使用的是Angular应用程序,因此使用window.location.href
更改页面并不是正确的方法,因为它会有效地导致整个页面重新加载,因此您的整个Angular应用程序将被重新加载。您拥有的是单页应用程序,您应该将其视为这样,即。你应该避免重新加载页面,除非你绝对必须这样做。
因此,建议您执行所需操作的方法是使用$location
服务更改显示给用户的页面。像
$scope.go_to = function (in_id) {
var url = "#details/" + in_tg_id;
$location.url(url);
};
$route
服务监视$location.url()
(根据其文档),因此$location.url()
中的更改将导致向用户显示正确的路线。
答案 1 :(得分:3)
您应该像这样使用$ location服务....
$scope.go_to = function (in_id) {
var url = "/details/" + in_id;
$location.path(url);
};
同时修复语法。
答案 2 :(得分:0)
我在webapp中也有同样的问题唯一的区别是我正在使用ngNewRouter并在配置中定义组件。对我来说,当我点击表格行时,当我从javascript执行window.location.href =#/ newpath或$ window.location.href =#/ newpath时,浏览器(IE11)会被卡住至少6-7秒。