在Meteor的Iron Router中,我们可以使用pathFor生成URL,例如

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


可以生成URL http://domain.com/posts/1234

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

这样,使用下面定义的路由,我们可以通过使用与http://domain.com/posts/1234类似的东西来生成URL {{ pathFor 'posts' id=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;
}])

09-25 17:19