如何在数据到达后更新Angular命名路由参数

时间:2013-09-13 09:24:41

标签: angularjs routes

我有类似

的东西
angular.module('MyApp.routing', []).
    config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
    $routeProvider
        .when("/",
        {action: "home"})

        .when("/calculator/:slug/:docId/:versionId",
        {action: "calculator", reloadOnSearch: false})

        .otherwise({redirectTo:'/'});
}]);

在我的路由文件中。我在我的控制器中发出了后端API的请求,我想更新URL slug param。

$scope.initPage = function () {
    $scope.content = {};
    $scope.isPreloaderVisible = true;
    http.post("calculator.getContentData.angular",
        {'slug': $scope.slug, 'docId': $scope.docId, 'versionId': $scope.versionId}, getContentSuccess, getContentErrorHandler);
}

总结一下,我使用的URL如下:

http://localhost/#/calculator//123456/

我希望将其更新(无需重新加载整页):

http://localhost/#/calculator/slug/123456/
在请求之后的方法getContentSuccess中

1 个答案:

答案 0 :(得分:2)

任何路由更改我相信导致视图(在ng-view中定义)更新自身。 reloadOnSearch是一个适用于基本为search参数的querystring参数的参数。

因此,如果您可以将slug作为查询字符串的一部分而不是url路径,则可以停止视图更改。

否则您需要查看其他路由库,例如ui-route