当前位置: 首页 > 知识库问答 >
问题:

AngularJS-更新$路线参数的最佳方法

权胜泫
2023-03-14

我有几个不同的路由,但包含相似的参数。
示例:

when '/user/:accountId/charts/:chartType', controller:ChartsController
when '/manager/:accountId/charts/:chartType', controller:ChartsController
when '/whatever/pathy/paththingy/charts/:chartType', controller:ChartsController

请注意,所有三个视图都使用相同的图表控制器来控制视图。这是一个相当通用的控制器,但它需要在可用的图表类型之间切换。。。同时保持路线的其余部分<示例:(这不起作用)

if my currrent url is '/user/001/charts/comparison'
Then I call something like:
$route.current.params.chartType = 'newChart';
$route.reload(); // or soemthing similar?
I want the url to become '/user/001/charts/newChart'

有人知道如何在不完全重新键入或重建路由路径的情况下轻松更新路由参数吗?

共有3个答案

严心水
2023-03-14

缺少这个简单的特性让我很恼火,所以我实现了它并在GitHub上提交了一份PR

班承恩
2023-03-14

如果可能的话,我建议您改用ui路由器。它在很多方面都比ngRoute强大。

本质上,这个模块有一个更高级别的概念,称为状态包装底层路由,它可以防止您直接使用较低级别的路由(如路由URL)。

比较一下:angular route和angular ui router有什么区别?

使用ui-router,您可以实现这样的代码:

$stateProvider
  .state('user.chart', {
     url: '/user/:accountId/charts/:chartType',   
     controller: "ChartsController"   
  })
 .state('manager.chart', {
     url: '/manager/:accountId/charts/:chartType', 
     controller: "ChartsController"
  })
 .state('pathy.chart', {
     url: '/whatever/pathy/paththingy/charts/:chartType', 
     controller: "ChartsController"
  })

您可以使用此代码在各州之间导航:

$state.go('user.chart',{chartType:'newChart'},{inherit:true});

文档

仲孙经赋
2023-03-14

从angular 1.3开始,您可以使用$route.updateParams(newParams)更改路由参数。

这是一段引用自angular docs。。。

$route.updateParams(新参数);

使$path服务更新当前URL,用newParams中指定的参数替换当前路由参数。提供的与路由的路径段定义匹配的属性名称将被内插到位置的路径中,而其余的属性将被视为查询参数。

 类似资料:
  • 我知道“newInstance”-Pattern(实例化新Android片段的最佳实践)。但是如果另一个片段更改数据,我如何更新片段的这些参数? 我知道片段/活动之间的回调方法,但这些回调不会更新参数?! 例如:在创建片段时,我将URI与包一起传递给它。然后,另一个片段通过对第一个片段的changeUri(URI-URI)方法回调来更改这个URI。如果然后重新创建片段(例如由于屏幕旋转),它将使用

  • 问题内容: 我目前正在尝试弄清楚如何在不重新加载整个页面的情况下更改路由参数。例如,如果我从 http://www.example.com/#/page 但将名称更新为“乔治”,将路线更改为: http://www.example.com/#/page/george 如果我已经路由了http://www.example.com/#/page/:name。 无需重新加载位置。可以只设置$ route

  • 问题内容: 我正在通过AngularJS教程进行工作。Angular使用它自己的JS路由机制来允许单页应用程序。Angular的示例路由文件如下所示: 我试图找到一个存储我的局部文件(特定于Angular的HTML文件)的好地方。理想情况下,我希望能够从Play中对其进行模板化(例如,将其作为* .scala.html文件)。我可以使用aa播放路由文件来完成此操作,如下所示: 我基本上偏向于这样的

  • 问题内容: 因此,我的任务是从本质上读取一个文件(记事本文件),该文件具有许多火车停靠站以及从一个停靠站到另一个停靠站所花费的时间。例如,它看起来像: 现在,我需要返回并访问这些站点及其时间。我当时正在考虑读取文件并将其存储为字典。我的问题是,最好的字典是吗?还是有其他一些Python工具会被证明更有用?任何想法将不胜感激! 问题答案: 我会反驳说-直截了当的命令并不是最好的选择。 假设您有100

  • 问题内容: 我想将AngularJS和Twitter Bootstrap结合到一个新的Web应用程序中。似乎已为Bootstrap编写了AngularJS指令。 但是,仔细看,这些指令似乎并不涵盖所有的Bootstrap。我可以将AngularUI引导程序代码与原始引导程序结合使用以获得完整性吗?首先可以做到吗? 我偶然发现了另一个名为AngularStrap的 Angular项目。我可以将所有三

  • 当我必须使用带有ListView的经典适配器时,我会像这样更新ListView中的数据: 我想知道什么是RecyclerView的最佳实践。因为在RecyclerView适配器中不能像在ListView中那样执行和。 所以我尝试使用,但没有效果。然后我尝试在视图上使用swapAdapter: 但是对于最后一个解决方案,我仍然必须创建一个适配器的新实例,我觉得这不是最好的解决方案。我应该可以在不使用