2016-01-13 8 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. Кто-нибудь знает, как я могу заставить его работать?

Edit:

Оказалось, что я поставил $ scope.test = "тестирование"; в обратном вызове асинхронного вызова, поэтому данные не готовы при вызове console.log.

Кроме того, это должно быть только то, что ответ Вигнеш в ниже

+0

Вы не можете передавать данные в угловом формате, для этого вам нужно использовать $ broadcast для обмена данными между двумя контроллерами. – Maher

+0

Я ответил на этот вопрос, посмотрите на это [обмен данными между двумя контроллерами] (http://stackoverflow.com/questions/34668416/linking-one-controller-to-another-to-call-service-on-ng-click/34702780 # 34702780) – Maher

+0

Спасибо за ссылку, Махер. Хотя это простая структура от родителей к ребенку. Мы можем просто использовать область распространения –

ответ

0

Использование можно попробовать это

В PageCtrl Declare $ scope.test в качестве объекта. $ scope.test = {данные: 'тест'}

В SubPageCtrl можно непосредственно получить доступ к '$ scope.test.data'. Вам не нужно использовать $ parent.

Использовать прототип цепи.

Смежные вопросы