Angularjs - 重新加载路线

时间:2013-01-17 01:46:44

标签: javascript location angularjs routes

如果发生“某事”,是否可以重新加载某条路线?

示例:
每次触发此功能时,我都需要使用新ID重新加载路径

$scope.updateDealer = function(zip, country) {
        if(zip) {
            $http.get('files/framework/dealer/near/'+ zip + '/' + country + '').success(function(data) {
                $scope.dealer = {marker: data};
                $location.path('/dealer/:id').search({id: data.id});
                $rootScope.dealerdetails = data;    
                $route.reload();
        });
        } else {
            $scope.dealer = $scope.loadall();
        }

  }  

路线

when('/dealer/:id', {templateUrl: 'files/tpl/dealer-details.html?26', controller: 'DealerDetailsCtrl', activetab: 'details'}).  

但不知何故,ID不在DealerDetailsCtrl中。

这是对DealerDetailsCtrl中数据的调用:

$rootScope.dealerdetails = dealerService.api.get({id: $routeParams.id, token: $scope.token})  

似乎$ routeParams.id为空,因此内容未加载。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

如果您访问/ dealer / 1(或其他任何ID)是为您定义的$ routeParams.id?你所要做的就是:

    $scope.updateDealer = function(zip, country) {
        if(zip) {
            $http.get('files/framework/dealer/near/'+ zip + '/' + country + '').success(function(data) {
                $scope.dealer = {marker: data};
                $rootScope.dealerdetails = data;
                $location.path('/dealer/' + data.id);
            });
        } else {
            $scope.dealer = $scope.loadall();
        }
  }

答案 1 :(得分:0)

由于角度为1.3,您可以使用$route.updateParams(newParams)来更改路线参数。

Here is a quote from the angular docs...

  

$ route.updateParams(newParams);

     

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

在你的情况下,你应该使用这样的东西:

$scope.updateDealer = function(zip, country) {
     if(zip) {
         $http.get('files/framework/dealer/near/'+ zip + '/' + country + '').success(function(data) {
             $scope.dealer = {marker: data};    
             $route.updateParams({id: data.id});
         });
     } else {
         $scope.dealer = $scope.loadall();
     }
}

答案 2 :(得分:-1)

这应该可以解决问题,因为Angular监视器散列更改会适当地路由它们:

window.location.hash = 'dealer/data.id';