Angular UI 路由器中 Iron Router 的 pathFor 等价物

Equivalent of Iron Router's pathFor in Angular UI Router

在Meteor的Iron Router中,我们可以用pathFor生成一个URL,比如

<a href="{{pathFor 'posts' id=1234}}">View</a>

可以生成URLhttp://domain.com/posts/1234.

问题: 使用 Angular 的 UI 路由器,是否有等效于 pathFor 的路由器?

这样,通过下面定义的路由,我们可以通过类似于 {{ pathFor 'posts' id=1234}}.

的方式生成 URL http://domain.com/posts/1234
angular.module('myApp').config(function($stateProvider) {

    $stateProvider
        .state('posts', {
            url: '/posts/:postId',
            templateUrl: 'client/posts/views/post.html',
            controller: 'PostCtrl'
        })

})

您可以使用:

<a ui-sref="posts({postId:1234})">View</a>

其中 posts 是州名。

here

额外

要获取 postId 的值并在您的控制器上使用它,您可以像这样使用 resolve

$stateProvider
    .state('posts', {
        url: '/posts/:postId',
        templateUrl: 'client/posts/views/post.html',
        controller: 'PostCtrl',
        resolve: {
            ID : function($stateParams){
                return $stateParams.postId;
            }
        }
    })

然后将 ID 注入您的控制器。

.controller('PostCtrl',
    ['$scope', 'ID', function($scope, ID){
        // you now have the access to ID
        $scope.id = ID;
}])