gpt4 book ai didi

javascript - ngClick with window.location.href 着陆重定向两次

转载 作者:行者123 更新时间:2023-11-28 04:32:13 25 4
gpt4 key购买 nike

我的移动优先应用程序需要可点击的表格行进行导航,它通过

<tr ng-repeat="foo in bar" ng-click="go_to(foo.id)" >

go_to() 函数在 Controller 范围内定义如下:

 $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'
})

table-row 调用 go_to 函数正常,但它在历史记录中登陆了 #details/x 页面两次,其中第一次点击是持续重定向到下一个,因此后退按钮变得无用。

IE:假设我们有两个页面; Main 和 Sub,其中 Main 具有 ng-click(go_to) 功能。在单击 ng-click 之前,浏览器历史记录如下所示 [Main]。点击后,它看起来像[Main, Sub, Sub]。反击,无论多少次,仍然会让你进入 Sub。

是否有任何一致的解释为什么应用程序会以这种方式运行?也非常欢迎替代解决方案

最佳答案

由于您在 Angular 应用程序中,使用 window.location.href 更改页面这不是正确的做事方式,因为它会有效地导致整个页面重新加载,从而重新加载整个 Angular 应用程序。你拥有的是一个单页应用程序,你应该这样对待它,即。除非绝对必要,否则您应该避免重新加载页面。

因此,推荐的方法是使用 $location 来做你想做的事。服务更改显示给用户的页面。有点像

$scope.go_to = function (in_id) {
var url = "#details/" + in_tg_id;
$location.url(url);
};

$route服务 watch $location.url() (根据其文档),因此在 $location.url() 中进行了更改将导致向用户显示正确的路线。

关于javascript - ngClick with window.location.href 着陆重定向两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30751193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com