Angular-ui modal - pass data into modal

前端 未结 3 1864
终归单人心
终归单人心 2021-01-01 15:18

I am trying to pass some model data into a modal window when it is opened. When the user clicks on an element I want to have the modal window open and display more detailed

相关标签:
3条回答
  • 2021-01-01 15:52

    What worked for me was to create an object within resolve that returns an object that holds the variables that I wanted to share.

    resolve: {
      shared: function(){
        return {
          name: 'Spencer',
          numbers: [1, 2, 3]
        }
      }
    }
    

    To access the shared object, include it when defining your modal instance controller.

    app.controller('ModalInstanceController', function($scope, shared, $uibModalInstance,
    0 讨论(0)
  • 2021-01-01 15:53

    I've made a plunker for you at http://plnkr.co/FzU5SOv3pdZmAPAIOzdo.

    You want to resolve your data much like you do items currently.

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

    and in your modal controller make sure to include the now resolved size object as follows:

    angular.module('ui.bootstrap.demo').controller('ModalInstanceCtrl', function ($scope, $modalInstance, items, size) {
    
      $scope.items = items;
      $scope.selected = {
        item: $scope.items[0]
      };
      $scope.size = size;
    
      $scope.ok = function () {
        $modalInstance.close($scope.selected.item);
      };
    
      $scope.cancel = function () {
        $modalInstance.dismiss('cancel');
      };
    });
    
    0 讨论(0)
  • 2021-01-01 16:07

    How about this?

    I added the item to the resolve

    resolve: {
        items: function () {
            return $scope.items;
        },
        item: function(){
            return size;
        }
    }
    

    And in the controller I am doing: $scope.item = item; after injecting the item

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