AngularJS将状态参数传递给数据字段

时间:2015-10-13 14:43:56

标签: javascript angularjs angular-ui-router

如何将site_id参数从数据传递给pageTitle?

.state('site', {
   url: "/site/:site_id",
   templateUrl: "views/site_detail.html",            
   data: {pageTitle: 'Site :' + $scope.$state.params.site_id},
   controller: "SiteDetailController"
})

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用resolve

.state('site', {
    url: '/site/:site_id',
    templateUrl: 'views/site_detail.html',
    controller: 'SiteDetailController',
    resolve: {
        pageTitle: function($stateParams) {
            return $stateParams.site_id;
        }
    }
);

然后,您的控制器将如下所示:

app.controller('SiteDetailController', function($scope, pageTitle) {
    console.log('pageTitle = ' + pageTitle);
});

如果您计划在完成状态更改之前根据参数检索或处理数据,则Resolve非常有用。如果您只对参数值感兴趣,那么您可以在控制器中使用$stateParams

app.controller('SiteDetailController', function($scope, $stateParams) {
    console.log('pageTitle = ' + $stateParams.site_id);
});

更新Here is a CodePen with an example using both $stateParams and resolve.