当前位置: 首页 > 面试题库 >

AngularJS UI路由器-更改URL而不重新加载状态

杜浩壤
2023-03-14
问题内容

当前,我们的项目正在使用default $routeProvider,而我正在使用此“ hack”来进行更改,url而无需重新加载页面:

services.service('$locationEx', ['$location', '$route', '$rootScope', function($location, $route, $rootScope) {
    $location.skipReload = function () {
        var lastRoute = $route.current;
        var un = $rootScope.$on('$locationChangeSuccess', function () {
            $route.current = lastRoute;
            un();
        });
        return $location;
    };
    return $location;
}]);

和在 controller

$locationEx.skipReload().path("/category/" + $scope.model.id).replace();

我想到的替换routeProviderui-router筑巢路线,但无法找到这ui-router

有可能angular-ui-router吗?

我为什么需要这个?让我用一个例子来解释:
创建新类别的路线是在SAVE /category/new 之后clicking显示的success- alert,我想将路线更改/category/new/caterogy/23(23-是存储在db中的新项目的id)


问题答案:

只需使用即可$state.transitionTo代替 $state.go。内部$state.go调用,$state.transitionTo但会自动将选项设置为{ location: true, inherit: true, relative: $state.$current, notify: true }。您可以呼叫$state.transitionTo和设置notify: false。例如:

$state.go('.detail', {id: newId})

可以替换为

$state.transitionTo('.detail', {id: newId}, {
    location: true,
    inherit: true,
    relative: $state.$current,
    notify: false
})

编辑。

$state.go('.detail', {id: newId}, {notify: false})


 类似资料:
  • 有没有可能--在中也这样做? 我为什么需要这个?让我用一个例子来解释: 创建新类别的路由是,在保存时显示,并且要将路由(23-是新项的id存储在数据库中)

  • 问题内容: 有人知道如何在不更改url的情况下更改ui路由器状态吗?如下代码所示;在某些情况下,需要将用户重定向到403或401状态。我希望能够执行此重定向而无需更改url。 问候,klmdb 问题答案: 将选项传递给$ state.go 实际使用它:http : //plnkr.co/edit/w2aolrt9wdW3EFcEB3Lw?p=preview

  • 我知道这不是react router的默认行为/功能,可以帮助我们轻松地重新加载当前组件,但我真的需要在我的应用程序中使用它。 我的应用程序处理产品。我有一个可以加载的产品列表,当我单击某个项目时,它会显示相关的产品详细信息。 在该页面上,我有加载相同组件的相关产品链接,但有另一个产品详细信息,位于 我在我的组件willmount中获取数据,似乎如果我只更改URL,就不会装载新组件,因此,我总是显

  • 我有一个组件,它显示了可以使用url查询参数过滤的项目列表,这些项目从api分页,如果设置了过滤器,我需要再次调用第一个页面,这个第一次调用是在路由器的解析器中,所以我需要的是路由器以相同的方式重新加载,就像我来自其他URL一样。 app.routes.ts app.resolver.ts app.component.ts app.service.ts 其他.ts组件

  • 问题内容: 嘿,我注意到在浏览GitHub存储库时,它使用AJAX加载每个文件夹/文件。 我了解所有这些,我只是想知道他们如何更改URL。您可以使用JavaScript获取并设置URL吗?如果是这样,对于将基于JavaScript的网站的一部分添加为书签可能非常有用。(其中的几页,通过JavaScript在其中移动) 谢谢。 问题答案: 它在历史记录操作API中使用了新的push/ pop状态功能

  • 问题内容: 好的,这就是我想要做的(我认为Google也是这么做的): 方案A: 在页面中,假设有3个部分。当用户点击“链接”部分时,的内容将通过AJAX加载并嵌入到页面中。 方案B: 当被加载时,我们实际上去非常相同的页面(如在方案A) - 和负载通过AJAX -如前。 问题 : 我们有2个相同的结果页面,但是URL不同(在第一种情况下,它只是,而在第二种情况下是)。 我想做的事 : 在方案A中