Pass current scope to modalInstance when using controllerAs syntax

前端 未结 2 1064
南笙
南笙 2020-12-11 15:45

I\'m using controllerAs syntax to avoid a $scope soup in my controllers, and also using ui.bootstrap to present a modal view.

I need to open a modalInstace that sh

相关标签:
2条回答
  • 2020-12-11 15:51

    Not sure If I understood correctly, but I got it working by passing/injecting the current 'controllerAs' in the resolve parameter

    var modalInstance = $uibModal.open({
          templateUrl: 'addEditModal.html',
          controller: 'AudioItemAddEditCtrl as vm',
          resolve: {
            parent: function(){
                return vm
            }
        }
        });
    

    And then, in the AudioItemAddEditCtrl...

    var AudioItemAddEditCtrl = function(parent, AudioItemService, $ModalInstance) {
    ...
    }
    

    Then I'm able to use 'parent' to access the parent controller scope directly.

    Hope this helps someone else.

    0 讨论(0)
  • 2020-12-11 15:53

    I need to open a modalInstace that shares the same scope as the current controller.

    Modal service creates inherited scope. And

    var modalInstance = $uibModal.open({
      templateUrl: 'addEditModal.html',
      scope: $scope
    });
    

    does not inject the scope but specifies parent scope for modal controller (otherwise root scope will be used as the parent).

    Since controllerAs was used on parent controller, modal controller will have access to inherited vm object on its scope.

    0 讨论(0)
提交回复
热议问题