Вопрос

У меня есть ng-repeat и я пытаюсь добавить модал, который передает ту же переменную области видимости в модальное окно.Я могу заставить модальное окно открыться, но значение области видимости из ng-repeat не отображается внутри модального.Надеюсь, мой код объясняет лучше.Это то, что у меня есть до сих пор:

        <div ng-controller="CustomerController">  
        <div ng-repeat="customer in customers">
               <button class="btn btn-default" ng-click="open()">{{ customer.name }}</button>

                <!--MODAL WINDOW--> 
                <script type="text/ng-template" id="myModalContent.html">
                    <div class="modal-header">
                        <h3>The Customer Name is: {{ customer.name }}</h3>
                    </div>
                    <div class="modal-body">
                            This is where the Customer Details Goes<br />
                            {{ customer.details }}
                    </div>
                    <div class="modal-footer">

                    </div>
                </script>

        </div>  
        </div>

Контроллер:

   app.controller('CustomerController', function($scope, $timeout, $modal, $log, customerServices) {
    $scope.customers= customerServices.getCustomers();

    // MODAL WINDOW
    $scope.open = function () {

        var modalInstance = $modal.open({
          templateUrl: 'myModalContent.html',
             });

    };

});

Приведенное выше действие открывает модальное окно.Однако данные о клиенте, такие как {{ customer.name }} из ng-repeat, не передаются в модальное окно.У меня что-то не так с контроллером?

Я пытаюсь создать это после просмотра примера пользовательского интерфейса Angular Bootrap здесь: http://angular-ui.github.io/bootstrap/

РЕДАКТИРОВАТЬ:

Вот пример jsfiddle: http://jsfiddle.net/Alien_time/8s9ss/3/

Это было полезно?

Решение

Я обновил вашу скрипку и приведенный ниже код также.Я надеюсь, что это поможет.

С уважением

var app = angular.module('app', ['ui.bootstrap']);

app.controller('ModalInstanceCtrl', function ($scope, $modalInstance, customer)
{
$scope.customer = customer;

});

app.controller('CustomerController', function($scope, $timeout, $modal, $log) {

    $scope.customers = [
        {
        name: 'Ricky',
        details: 'Some Details for Ricky',
        },
        {
        name: 'Dicky',
        details: 'Some Dicky Details',
        },
        {
        name: 'Nicky',
        details: 'Some Nicky Details',
        }
    ];

    // MODAL WINDOW
    $scope.open = function (_customer) {

        var modalInstance = $modal.open({
          controller: "ModalInstanceCtrl",
          templateUrl: 'myModalContent.html',
            resolve: {
                customer: function()
                {
                    return _customer;
                }
            }
             });

    };

});

Другие советы

Вот как я настраиваю свои модалы для обработки элементов, которые я ng-повторяю и хочу отредактировать.Я предлагаю настроить его для работы с другим контроллером, потому что тогда вы сможете использовать DI для добавления разрешенного элемента в дочернюю область.

$scope.openModal = function(item) 
    // This sets up some of the options I want the modal to open with
    var options = {}
    angular.extend(options, {
      templateUrl: '/views/userItems/form.html',
      controller: 'ItemEditController',
      resolve: {
        // I resolve a copy of the so it dont mess up the original if they cancel
        item: function() { return angular.copy(item); }
      }
    });
    $modal.open(options).result.then(function(updatedItem) {
      // after the user saves the edits to the item it gets passed back in the then function
      if(updatedItem) {
        // this is a service i have to deal with talking to my db
        modelService.editItem(updatedItem).then(function(result) {
          // get the result back, error check then update the scope
          if(result.reason) {
            $scope.addAlert({type: 'error', title: 'Application Error', msg: result.reason});
          } else {
            angular.extend(vital, result);
            $scope.addAlert({type: 'success', msg: 'Successfully updated Item!'}); 
          }
        });
      }
    });
  };
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top