2016-01-13 137 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'。您不需要使用$父。

利用原型链。