2014-09-26 6 views
1

Я хочу получить доступ к родительскому родительскому объекту или манипулировать его, не становясь слишком сложным. Контроллер, как мода позволяет называть родительский контроллер как таковые: this.applicationCtrl.something данного applicationCtrl> parent1Ctrl> child1Ctrl - siblingOfChild1CtrlРодительский идентификатор области Angularjs

Чтобы дать вам лучший пример, у меня есть applicationCtrl на <body> тэге, у меня есть боковая панель с sidePanelCtrl и содержание с contentCtrl с вложенной contentChildCtrl

с контроллером как модели, я могу позвонить или изменить положение вещей на sidePanelCtrl по телефону this.sidePanelCtrl, я могу сделать то же самое, если я просто хочу, чтобы использовать $scope метод?

Это специально для contentChildCtrl, где я не хочу писать $scope.$parent.$parent, которые еще только получит меня к applicationCtrl, а не sidePanelCtrl

+0

Вы можете попробовать с $ сферы $ родителем.? – Kailash

+0

Отредактировано –

+0

См. [Это] (http://stackoverflow.com/questions/21453697/angularjs-access-parent-scope-from-child-controller). Надеюсь, это даст вам некоторую идею. – Kailash

ответ

1

Если вы не знаете, уровень вложенности родительской области, или не хотите набирать $scope.$parent.$parent и т.д. вы можете прикрепить что-то вроде этого на службу:

angular.module('app').service('inherit', function() { 
    var inherit = function(scope, item) 
    if (!scope) return; 
    if (scope[item]) return scope[item]; 
    return inherit(scope.$parent, item); 
    } 
    return inherit; 
} 

Если Пространства имен не велика, то она не может помочь много, но если вы хотите изменить, скажем, содержимое боковой панели из области внука, вы можете позвонить по номеру var sidebarNav = inherit($scope, 'sidebarNav'); в контроллере внука.

Edit - Лучше поместить это в службе, чем на $rootScope, как комментарий ниже затронул

Edit: обновлен, чтобы воспользоваться услугой

+1

гораздо лучше рекомендовать услугу, чем даже думать о '$ rootScope'. – charlietfl

+0

Правда, хороший звонок. добавили, что примечание к ответу –

+0

Что это будет выглядеть на сервисе? @TomA вы можете обновить? –

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