AngularJS状态提供程序在URL中使用除ID之外的其他值



我正在使用$stateProvider为我的应用程序绘制路线。 我希望网址有意义,这样我就可以获得新闻应用的日期、类别和标题,而不是网址中的 id。

目前,我可以在执行此操作时获取加载所需模板的状态

    .state('viewArticle', {
        url: '/news/:articleId',
        templateUrl: 'view-article.html'
    })

我得到http://www.example.com/#!/news/5517374f286ff5ba79037568我想加载相同的视图,其中我的文章显示网址http://www.example.com/#!/news/2015-04-04/weather/tomorrow

当我在状态中对 url 进行硬编码时,我可以实现这一点

    .state('viewArticle', {
        url: '/news/2015-04-04/weather/tomorrow',
        templateUrl: 'view-article.html'
    })

但是我无法弄清楚如何将多个参数从我的数据传递到 url 中。这可能吗? 如何才能最好地实现这一点。

这就是我想出但没有成功的东西。

    //angular.module().config
    .state('viewArticle', {
        //url: '/news/:articleId',
        //url: '/news/2015-04-04/weather/tomorrow',            
        url: '/news/:year/:category/:title',
        templateUrl: 'view-article.html'
    })
    //view-article.html (this seems ok as it works when state hard coded)
    go('/' + article.date + '/' + article.category + '/' + article.title
    //controller
    $scope.go = function(path) {
        $location.path( path );
    };

我认为你应该使用angular-ui-router$state.go()而不是$location.path

方法

$state.go('viewArticle',{year: article.date, category: article.category, title: article.title });

最新更新