Angular JS - 在 $stateProvider 状态上设置和获取查询字符串参数

Angular JS - set and get query string parameter on $stateProvider state

我认为这基本上只是语法问题,但我设置了以下路由:

app.config(['$stateProvider', function ($stateProvider) {
    $stateProvider.state('addAlbum', {
        url: "/albums/create/:artistId",
        templateUrl: "public/albums/views/album.tpl.html",
        controller: "createAlbumController",
        data: {
            pageTitle: 'Create Album'
        },
        resolve: {
            albums: function (publicArtistServices) {
                return publicArtistServices.getAlbums(1);

            }
        }
    });
}]);

我需要 getAlbums() 方法来使用在 URL:

上传入的 artistId

return publicArtistServices.getAlbums({这里需要URL的艺术家ID});

我尝试使用 return publicArtistServices.getAlbums($state.params[0]); 来猜测它,但这只是抛出一个“ $state 未定义”错误。

此处正确的语法是什么?

您需要包含 $state 参数(以便 "inject" 它进入您的函数):

        albums: function ($state, publicArtistServices) {
            return publicArtistServices.getAlbums($state.params[0]);
        }

如果这不起作用,请使用 $route.current.params.artistId,如下所示:

$stateParams 是您要为此使用的内容。

app.config(['$stateProvider', function ($stateProvider) {
$stateProvider.state('addAlbum', {
    url: "/albums/create/:artistId",
    templateUrl: "public/albums/views/album.tpl.html",
    controller: "createAlbumController",
    data: {
        pageTitle: 'Create Album'
    },
    resolve: {
        albums: function ($stateParams, publicArtistServices) {
            return publicArtistServices.getAlbums($stateParams.artistId);
        }
    }
});

}]);