2014-06-05 185 views
0

我試圖通過使用State Provider將數據傳遞到我的控制器。如何將數據從一個控制器傳遞到另一個控制器

我有這樣的事情

app.js

$stateProvider  
     .state('test', { 
      url: '/te', 
      views: { 
       '': { 
        templateUrl: 'test.html', 
        controller: 'testCtrl' 
       }, 
       data:{ 
        testValue:true 
       } 
      } 
     }) 

我的控制器:

app.controller('mainTestCtrl', function($scope) { 
    //I need to be able to get the testValue from here. 
}) 


app.controller('testCtrl', function($scope, $state) { 
    var testValue = $state.current.views.data.testValue; 
}) 

我真的不能提供mainTestCtrl國家提供,因爲我需要測試值是true只有當調用testCtrl時。我需要一種方法將testValue傳遞給mainTestCtrl。有沒有辦法做到這一點?謝謝。

+0

在其中'testCtrl'被實例化的一點,就是' mainTestCtrl'已經實例化自己? –

+0

@Marc yes mainTestCtrl將在testCtrl之前實例化 – FlyingCat

回答

0

如果兩個控制器的級別相同(a.e不是父母子女),則可以使用$rootScope.$broadcast

演示1 Fiddle

當心!

確保2 第二控制器初始化發送$broadcast之前。否則,沒有人會聽。


但我會用服務,將存儲testValue和每個控制器可以把它抓回來:

演示2 Fiddle

+0

爲什麼父子關係排除使用'$ rootScope。$ broadcast'? –

+0

@MarcKline對我來說,在$ rootScope下面經常使用'。$ broadcast'是不太好的風格。如果是父母子女,父母通過使用他自己的範圍發送廣播,但不是'$ rootScope' –

+0

我看到...我以爲你在說這是不可能的(我會反對)。我想你只是說你不會推薦它。 –

相關問題