2013-10-02 41 views
14

在我的AngularJS应用程序的路由配置中,大部分路由都是使用reloadOnSearch选项设置为false来定义的,因为大部分时间页面在搜索参数时不应重新加载改变。虽然选项reloadOnSearch设置为false

但在极少数情况下,我需要一个不同的行为,我需要重新加载URL,但只更改了搜索参数。

有没有办法迫使AngularJS虽然reloadOnSearch设置为false重新加载网址是什么?

回答

15

我还没有尝试过,但可以尝试的是。

$routeUpdate事件处理程序中调用$route.reload()方法,如果您知道应导致刷新路由的条件。

+0

你是什么意思与$路由更新事件处理程序,我怎么可以配置它的行为或者是它AngularJS核心的一部分?我不想更改框架本身以便能够稍后更新版本。 – Flo

+0

好的,现在我明白了你的意思。我应该听取$ routeUpdate事件,然后在必要时重新加载。 – Flo

+1

基本上你可以随时做$ route.reload()。什么时候该做就取决于你。由于您想要在搜索查询更改的情况下刷新视图,请正确。你怎么知道搜索查询已经改变。搜索查询更新时会引发此事件。 – Chandermani

2

这也是工作

app.controller('appCtrl',function($scope,$window){ 
      $scope.reload =function(){ 
       $window.location.reload(); 
      } 
}) 

HTML

<div ng-click="reload()">reload</div> 
+4

虽然问题并没有形成,以澄清他/她是否要重新加载路线或整个应用程序,我很确定他想重新加载路线。您的解决方案重新初始化整个应用程序。 – epitka

13

如果你正在尝试当用户点击一个链接,设置链接的target属性来强制重新加载。这将触发重载无论reloadOnSearch =假的

<a href="/same_page?different_param=123" target="_self">Reload</a> 
+0

男人!你让我今天一整天都感觉很好!这确实是一种黑客攻击,但它运行的很好,足以满足一些有限的需求。谢谢! –

+0

对我来说诀窍就好了!谢谢。 –

+1

这将重新加载整个应用程序,而不仅仅是路线。非hacky的方式是使用 ui-sref-opts =“{reload:true}” – BtnMike

相关问题