2016-01-29 28 views
1

我想獲取我的控制器中的$ stateParams對象的屬性之一的值。我似乎能夠獲得整個$ stateParams對象,但我無法獲得特定的屬性。

$rootScope.params = $stateParams; // this gets me the object 
$rootScope.myVar = $stateParams.fooParam + ' some msg'; // this gets me undefined 

那麼這是怎麼設置我的$ stateProvider ...

$stateProvider 
     .state('parent', { 
      url: "/parent", 
      templateUrl: 'tpl.html', 
      params: { 
      fooParam: 'foo defult', 
      barParam: 'bar defult' 
      }, 
      controller: 'ParentCtrl' 
     }) 

然後在我的HTML界面,SREF路線,我通過一些東西帕拉姆。

<a ui-sref="parent({ 
     fooParam:'foo parent', 
     barParam:'bar parent' 
     })">parent</a> 

然後在我的控制器中,我想訪問這些參數。這裏是truggle訪問$ stateParams對象成員的地方。

$rootScope.myVar = $stateParams.fooParam + ' some msg'; 

在我的HTML,如果我叫{{myVar的}},我會在這個特殊的例子,我想在我的控制器的fooParam的值「未定義一些味精」

基本上。我不明白該怎麼做。

這裏是我的問題的例子的Plunker:

https://plnkr.co/edit/dXTgKMpBTHiv2Bt5nFxC?p=preview

+0

更新我的答案,同一個工作plunker。 – andyhasit

回答

2

其實,我錯了。你需要在URL中包含如下PARAMS:

$stateProvider 
    .state('parent', { 
     url: "/parent/:fooParam/:barParam", 
     params: { 
     fooParam: 'foo defult', 
     barParam: 'bar defult' 
     }, 
     templateUrl: 'tpl.html', 
     controller: 'ParentCtrl' 
    }) 

但另一個問題是,你需要從該州註冊的控制器,這是在文檔的gotchas section上市訪問$ stateParams

查看更新plunker顯示myVar的從$ stateParams在控制器注入(正常工作)和MyVar2從$ stateParams在app.run注射()函數(不工作)。

相關問題