Question

Je suis à l'aide angulaires-bootstrap $modal et j'ai des problème de comprendre comment partager des données entre un contrôleur et le modal.

Contrôleur:

app.controller 'MainController', ($scope, $templateCache) ->      
  $scope.openModal = ->
    modal = $modal.open(
      template: $templateCache.get('modal.html')
      controller: modalController
      size: 'sm'
      resolve:
        repository: ->
          $scope.repository
    )

Modal:

modalController = ($scope, $modalInstance, repository) ->
  $scope.repository = repository

  $scope.update = (other_repo) ->
    $scope.repository = other_repo  
    $modalInstance.dismiss('cancel')

À ce point, j'attends $scope.repository de MainController être mis à jour lorsque c'est le changement de la modale, mais il n'est pas le cas.

Ce qui me manque?

Merci

Était-ce utile?

La solution

Le contrôleur modal a une portée différente du contrôleur qui ouvre le modal.Pour récupérer certaines données de la boîte de dialogue une fois sa fermeture, vous devez le faire sortir de la promesse de résultat, comme indiqué dans l'exemple dans la documentation :

modal = $modal.open(...);

modal.result.then(function (otherRepo) {
  $scope.repository = otherRepo;
}

Autres conseils

Si vous ne passant pas par le contrôleur de la portée de l'en $modal, c'est de créer une nouvelle qui fait hérité de l' $rootScope: var modalScope = (modalOptions.scope || $rootScope).$new(); et il n'y a pas de connexion à l'ouvreur de contrôleur du champ d'application de celle-ci.Mais vous pouvez passer en modal champ d'application de contrôleur de l'ouvrir:

  $scope.open = function (size) {
    var modalInstance = $modal.open({
      templateUrl: 'myModalContent.html',
      controller: ModalInstanceCtrl,
      size: size,
      scope: $scope
    });

Cette fois, la portée de ModalInstanceCtrl va hériter d'un parent du contrôleur de la portée et de toutes les modifications seront prises en compte dans ouvreur du contrôleur de portée.

Regardez cette plunker (il est légèrement modifié échantillon de Bootstrap-UI) selected objet de l'ouvreur champ d'application mise à jour en modal et cette mise à jour immédiatement reflétées dans la perspective de la ModalDemoCtrl le contrôleur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top