2016-01-13 112 views
1

我有一個路由提供者將控制器分配給不同的路由。從子控制器訪問路由提供者控制器

.when('/page/:id', { 
    templateUrl: '/page/overview.ejs', 
    title: __('pageTitle'), 
    controller: 'PageCtrl' 
} 

,並在overview.ejs我有這樣的事情:

<div> 
    <div ng-controller="SubPageCtrl"> 
    .... 
    </div> 
</div> 

的問題是:我怎麼訪問PageCtrl的財產SubPageCtrl

我試圖做到這一點,但它不工作:

function PageCtrl ($scope) { 
    $scope.test = "testing"; 
} 

function SubPageCtrl($scope) { 
    console.log($scope.$parent.test); 
    console.log($scope.test) 
} 

他們都打印出來undefined。有人知道我可以如何使它工作嗎?

編輯:

原來我把 $ scope.test = 「測試」; 在一個異步調用的回調中,所以當我調用console.log時數據沒有準備好。

除此之外,它應該是正是下面

+0

您不能以角度傳遞數據,因爲您必須使用$ broadcast在2控制器之間共享數據。 – Maher

+0

我回答了這個問題,看看這個[2控制器之間共享數據](http://stackoverflow.com/questions/34668416/linking-one-controller-to-another-to-call-service-on-ng-click/34702780#34702780) – Maher

+0

感謝您的參考,馬赫。雖然,這只是一個簡單的父母對孩子的結構。我們可以使用共享範圍 –

回答

0

維涅什的響應使用可以試試這個

消息頁控件 申報$ scope.test爲對象。 $ scope.test = {data:'test'}

SubPageCtrl您可以直接訪問'$ scope.test.data'。您不需要使用$父。

利用原型鏈。