在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;
}])