2015-10-13 21 views
2

如何將site_id參數從數據傳遞給pageTitle?AngularJS通過狀態參數到數據字段

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

回答

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.

+0

<標題數據-NG-綁定=「$ state.current.data .pageTitle「>這就是我使用pageTitle的方式,它並沒有顯示在這裏。 – XkiD

+0

data:{ pageTitle:function($ stateParams){ return $ stateParams.site_id; } },這也不起作用,它給了我 function($ stateParams){ return $ stateParams.site_id; } XkiD

+0

如果你只是想獲得參數,你可以在你的控制器中包含'$ stateParams'。然後你可以用下面的方法設置一個scope變量:'$ scope.pageTitle = $ stateParams.site_id;' – Corey

相關問題