Передать текущую область в modalInstance при использовании синтаксиса controllerAs

Я использую синтаксис controllerAs, чтобы избежать супруга $ scope в моих контроллерах, а также использую ui.bootstrap для представления модального представления.

Мне нужно открыть modalInstace, который имеет ту же область видимости, что и текущий контроллер. При введении области видимости вы могли бы сделать что-то вроде:

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

Однако, поскольку я не внедряю область действия и не использую синтаксис controllerAs, это не сработает.

Исходя из того, что я обнаружил, вам нужно будет использовать решение для передачи данных, но вы должны явно передавать их через функции. Есть ли способ передать всю область?

Есть несколько вещей, которые мне нужно сделать в этом модальном режиме, и передача данных кажется чрезмерной.

Не хочу этого делать, потому что это кажется грязным ...

 var modalInstance = $modal.open({
  templateUrl: 'myModalContent.html',
  controller: 'ModalInstanceCtrl',
  resolve: {
    user: function() {
        return vm.user;
    },
    something: function() {
        return vm.something;
    },
    blah: function() {
        return blah;
    }
  }
});

Есть идеи получше?

12 голосов | спросил afterxleep 16 +03002015-10-16T09:57:17+03:00312015bEurope/MoscowFri, 16 Oct 2015 09:57:17 +0300 2015, 09:57:17

2 ответа


0
  

Мне нужно открыть modalInstace, который имеет ту же область, что и   текущий контроллер.

Модальная служба создает унаследованную область . И

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

не вводит область, но указывает родительскую область для модального контроллера (в противном случае корневая область будет использоваться в качестве родительской).

Поскольку controllerAs использовался на родительском контроллере, модальный контроллер будет иметь доступ к унаследованному объекту vm в своей области.

ответил estus 16 +03002015-10-16T10:08:06+03:00312015bEurope/MoscowFri, 16 Oct 2015 10:08:06 +0300 2015, 10:08:06
0

Не уверен, правильно ли я понял, но я заработал, передав /введя текущие 'controllerAs' в параметре разрешения

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

А затем в AudioItemAddEditCtrl ...

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

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

Надеюсь, это поможет кому-то еще.

ответил afterxleep 17 +03002015-10-17T06:34:30+03:00312015bEurope/MoscowSat, 17 Oct 2015 06:34:30 +0300 2015, 06:34:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132