javascript - AngularJS 路由,在显示 slug 时使用 ui-sref 传递 id 而不是 url 中的 id

标签 javascript angularjs angularjs-routing angular-routing

我将概述我已经设置的内容以及我想要工作的内容:

我的模板中有一个项目列表,如下所示:

<ul>
    <li ng-repeat="user in users">
        <a ui-sref="user({slug: user.slug, id: user.id})">
            {{user.name}}
        </a>
    </li>
</ul>

我有一个像这样的状态提供者:

.state('user', {
    url: '/:slug',
    controller: 'UserCtrl',
    templateUrl: 'app/user/userProfile.html',
    resolve: {
         user: function($stateParams, UserService) {
             return UserService.get($stateParams.id);
         }
    }
});

现在我明白这是行不通的,因为 id 参数没有在 url 中定义,所以它没有传递给 $stateParams 。我已经看到类似的问题回答了使用这样的建议:

resolve: {
     user: function($stateParams, UserService) {
         var userId = UserService.getIdFromSlug($stateParams.slug);
         return UserService.get(userId);
     }
}

但是 getIdFromSlug 方法要么需要另一个 API 调用,要么在我获取列表时在服务中创建映射对象,如 { slug: id }。两者似乎都不是非常优雅的解决方案,特别是因为我已经有了 id

我错过了什么吗?没有其他方法可以将参数传递给状态提供者吗? (我对 Angular 还很陌生)。

最佳答案

.state('user', {
    url: '/:slug',
 params: { id: { value: -1 } },

我使用了上面的方法,所以 id 没有在 url 中传递。

关于javascript - AngularJS 路由,在显示 slug 时使用 ui-sref 传递 id 而不是 url 中的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28241187/

相关文章:

javascript - ionic.bundle.js :25642 Error: [$injector:unpr] Unknown provider: $cordovaGeolocationProvider <- $cordovaGeolocation <- AgeCtrl

javascript - 只要鼠标位于 div 上,每秒递增数字

javascript - 云函数陷入无限循环

javascript - Promise catch 未在测试中被捕获

angularjs - 使用 AngularJS 路由时有没有办法预加载模板?

javascript - AngularJs - 路由解析函数无法识别工厂

javascript - Highcharts 位置工具提示在堆叠条的中间

javascript - 如何在 angularjs 中从外部追加 ng-repeat 范围内的数据?

javascript - 在 google cdn 上找不到 Angular 路由 js

angularjs - angular-route 如何防止第一次下载,但稍后允许