无需在AngularJS中重新加载控制器即可更改哈希

时间:2013-08-29 08:38:26

标签: url angularjs controller

我正在使用货币转换器,我的网址为#/currency/50/USD/to/EUR,其中50,USD和EUR是参数。现在我有一个交换功能,交换货币并保持转换价值,我想在不重新加载控制器的情况下将URL更改为#/currency/50/EUR/to/USD,只需更改哈希。我对如何处理纯js有一个想法,但有角度方式有解决方案吗?

2 个答案:

答案 0 :(得分:13)

检查此answer。听起来就像你需要的一样。

基本上,您似乎有两种选择:

  1. 倾听$locationChangeSuccess事件。
  2. $routeProvider定义中,在定义路由和相应的模板加载时,请指定选项reloadOnSearch = false

答案 1 :(得分:7)

好的关于callmekatootie解决方案,这是我的结果,我必须添加一个条件,以便能够在需要时离开我的控制器

controller('CurrencyConvertCtrl', function ($scope, $route){
    var lastRoute = $route.current;
    $scope.$on('$locationChangeSuccess', function(event) {
        if($route.current.$$route.controller === 'CurrencyConvertCtrl'){ 
        // Will not load only if my view use the same controller
            $route.current = lastRoute;
        }
    });
}