1

Я использую угловые самозагрузки модальность как этогоКак получить родительский контроллер в контроллере, как синтаксис в угловом

var myModal = $modal.open({ 
     controller: 'MyUpdateController as muc', 
     templateUrl: 'views/create_form.html', 

Теперь мой родительский контроллер является ParentController as PC.

Я хочу знать, как я могу получить доступ к PC внутри muc или внутри create_form шаблона

ответ

1

Вы всегда можете получить доступ к псевдониму контроллера из соответствующего объема или его потомков осуществляются вниз по наследству (Алиас прилагается на сфере как имя свойства со значением, содержащим ссылку на экземпляр контроллера). angular ui modal использует свойство scope, которое вы можете использовать, чтобы установить ваш модальный объект в определенную область (иначе он по умолчанию не применяется rootScope). Таким образом, установить свойство области видимости в вашем модальной

$modal.open({ 
    controller: 'MyUpdateController as muc', 
    templateUrl: 'views/create_form.html', 
    //Create a child scope of current scope or even pass the current $scope itself but be aware 
    scope:$scope.$new() 

Inject $scope в контроллере (MyUpdateController) и доступ к родительской области, как $scope.PC и вы можете получить доступ к этому псевдониму в вас шаблоне, а также.

Другой способ, которым вы, вероятно, можете использовать свойство модального объекта resolve и передать ему текущую родительскую область.

$modal.open({ 
    controller: 'MyUpdateController as muc', 
    templateUrl: 'views/create_form.html', 
    resolve: { 
     parentCtrl: function(){ 
     return ctrl; //return controller here 
     } 
    } 

и впрыснуть parentCtrl как зависимость в вашем MyUpdateController и получить его и установить его на прицел.

+0

спасибо за это, но я не получил 'return ctrl', что будет' ctrl' здесь – user3214546

+0

@ user3214546 Это может быть ваш контроллер (я предполагаю, что могу получить доступ к ПК или ПК). Я просто использовал переменную thats it, потому что вы не можете передать 'this' там, вам нужно будет кэшировать ее снаружи. Так что больше, как в вашем текущем контроллере, вы делаете 'var vm = this;' inorder, чтобы избежать прав доступа к этому «контексту» (если не использовать машинопись) ?, ctrl - vm в этом случае. – PSL

+0

, так что u означает, если у меня есть 'vm = this', тогда я могу' return vm'. это тот правый – user3214546

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