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

如何在不做路由的情况下在AngularJS中设置查询参数?

冯玮
2023-03-14
问题内容

我的Angular应用程序允许用户加载项目,当发生这种情况时,我想设置一个包含该项目ID的查询字符串,以便如果用户刷新页面(或想要链接到该页面),则该URL已经存在设置(如果$
routeParams中存在ID,则已经有代码可以加载该项目)。

如何设置该查询参数而不引起路由?如果发生路由,页面上还有其他东西会重置(包括必须重新加载其所有数据的插件),因此仅更改查询参数很重要。

简而言之,当我加载项目123时,我要做的就是URL从以下位置更改:

www.myurl.com/#/Items

至:

www.myurl.com/#/Items?id=123

没有进行任何路由。

最好的方法是什么?


问题答案:

在$
routeProvider
配置中设置reloadOnSearch为false:

$routeProvider
  .when('/items', {
    controller: 'ItemsCtrl',
    templateUrl: '/templates/items',
    reloadOnSearch: false
  },
  ...
);

并在控制器中用于$location.search()设置id参数:

$location.search('id', 123);


 类似资料:
  • 我有一个具有两个属性的dynamoDB表: A: 主分区键 B: 主排序键 我想使用属性B查询这个表,因为我不知道A的值。可以这样做吗? 是否可以将B设为GSI(全局二级索引),如何使用B查询表,因为B已经是排序键。

  • 我已将路径修改为 在此之后,如果我试图访问url,它不会将我重定向到适当的页面,而是抛出一个错误,如下所示

  • 问题内容: 我需要在单页应用程序中检测页面刷新事件。 问题答案: 您不确定,因为刷新浏览器页面等同于退出应用程序然后再次打开它。 您可以做的是检测页面退出事件和应用程序打开事件。 在app.run()块中注入“窗口”依赖项并添加: 并在$ routeChangeStart事件上 而且如果绝对需要链接这两个事件,它必须在后端/服务器端..... 我希望这有帮助。

  • 点击Search by Name超链接时,URL会发生变化,但SearchByNameComponent会加载到app.component.html内容下面。如何在单击时只显示SearchbyNameComponent而不显示全部内容?target=_blank没有帮助。

  • 我正在尝试使用http://localhost:3000/login?Id=1这样的查询参数来实现React路由器,我只能在我的登录路由中实现它,如果我将路径作为http://localhost:3000/然后重定向,但是,我想在整个应用程序中实现。如果我在其他路由上实现,它会匹配路由。这就是我的的样子,有人能指导我如何实现包括查询参数在内的所有路由路径吗?

  • 问题内容: 我需要在 不更改URL的情况下 进行路由。 在自己实现此功能之前,我尝试过通过React Router寻找一些东西。我看到有这样一个东西 : createMemoryHistory([options]) createMemoryHistory创建一个不与浏览器URL交互的内存历史对象。当您需要自定义用于服务器端呈现,自动测试的历史记录对象或不想操纵浏览器URL(例如,将应用程序嵌入到i