2013-07-25 63 views
5

如果我是“结果页面”的返回用户,我想查看我使用的最后一个过滤器。所以我使用ngCookies更新页面上最后使用的搜索参数。

controller('Results', ['$location','$cookies',function($location,$cookies){ 
    $location.search(angular.fromJson($cookies.search)); 
}]); 

//will yield: /results?param1=dude&param2=bro 

但是,如果我点击“”我不会被带到最后一页我期望的那样。

这是因为另一个国家被推到历史上,但用户没有察觉。

用户登陆/results,但控制器立即将/results?param1=dude&param2=bro推送到状态历史记录上。

如何覆盖或删除状态/results以便“”返回“会使我回到用户期望他们来自的最后一页是什么?

+0

你可以使用$ location.replace(); ?我正在查看http://docs.angularjs.org/guide/dev_guide.services.$location – Will

回答

10

replace()到您的$ location.search通话结束:

controller('Results', ['$location','$cookies',function($location,$cookies){ 
    $location.search(angular.fromJson($cookies.search)).replace(); 
}]); 

这将导致最后历史条目将被替换,而不是一个新的补充。

还有reloadOnSearch选项,您可以将其设置为false以防止在搜索参数更改(如果您希望返回按钮转到/results)时重新加载路线。

+0

+1谢谢,这正是我所期待的。 –