如果发生“某事”,是否可以重新加载某条路线?
示例:
每次触发此功能时,我都需要使用新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为空,因此内容未加载。
感谢您的帮助。
答案 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';