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

Jon*_* M. 4 url controller angularjs

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

cal*_*tie 13

检查这个答案.听起来就像你需要的一样.

基本上,你似乎有两个选择:

  1. 听取$locationChangeSuccess活动.
  2. 在您的$routeProvider定义中,在定义路由和相应的模板加载时,指定选项reloadOnSearch = false.


Jon*_* M. 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;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)