2013-05-19 4 views
7

я следующее:Может контроллер наследует область видимости от родительского контроллера при использовании UI-маршрутизатор

var admin = { 

    name: 'admin', 
    url: '/admin', 
    views: { 
     'nav-sub': { 
      templateUrl: '/Content/app/admin/partials/nav-sub.html', 
      controller: function ($scope) { $scope.message = "hello"; } 
     } 
    }, 
    controller: ['$scope', function ($scope) { 
     $scope.message = "hello"; 
    }] 
} 

var subject = { 
    name: 'subject', 
    parent: admin, 
    url: '/subject', 
    views: { 
     '[email protected]': { 
      templateUrl: '/Content/app/admin/partials/grid-subject.html', 
      controller: 'AdminGridSubjectController', 
     } 
    } 
}; 

Я хотел бы AdminGridSubjectController знать, что значение $ scope.message это, но это, кажется, не знает, что-нибудь об этом. Есть ли что-то, что я делаю неправильно?

stApp.controller('AdminGridSubjectController', ['$scope', function ($scope) { 
    var a = $scope.message; 
}]); 

ответ

17

Для того, для доступа к scope родительского контроллера в Угловом UI-маршрутизаторе:

$scope.$parent 

Тогда материнская область затем будет свободно доступна вам.

+1

Это не работает для просмотров. Детское представление не может получить доступ к свойствам не-корневой области родителя, который содержит представление. Они просто не существуют и не подвергаются должным образом. – egervari

+0

Я искал часы! спасибо за кучу – tinybyte

0

Ваша проблема может быть, что название должно отражать родителя в нем:

var subject = { 
    name: 'admin.subject', 
    parent: admin, 
    url: '/subject', 
    ... 

Вот полный пример того, как наследовать $ рамки с UI-маршрутизатор: plunker ex

+0

- Спасибо Шварц Бен. Я попробовал это, но у меня все еще есть проблема. Я задаюсь вопросом, связано ли это с тем, что я использую представления. –

+0

@ Anne Это проблема вида. – luthur

+0

Не нужно, если вы объявите «родительский», верно? Кроме того, вы можете использовать строку вместо ссылки на объект? Например: '{..., parent: 'admin', ...}'? Спасибо! – Cody