Работа с модалами в angularjs

0

У меня есть этот код здесь

<div ng-repeat="item in items" class="col-sm-4 portfolio-item">
         <script type="text/ng-template" id="myModalContent.html">

Однако я не могу получить доступ к {{item}} в тегах скрипта. Есть ли способ, которым я могу вставлять id и type извне тегов div? Извините за вопрос о новичке.

Вот код для контроллера:

.controller('listCtrl', function($scope, $modal, $log, $stateParams, items) {

    $scope.animationsEnabled = true;

    $scope.open = function(size) {

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

        modalInstance.result.then(function(selectedItem) {
            $scope.selected = selectedItem;
        }, function() {
            $log.info('Modal dismissed at: ' + new Date());
        });
    };

    $scope.toggleAnimation = function() {
        $scope.animationsEnabled = !$scope.animationsEnabled;
    };

})

// Please note that $modalInstance represents a modal window (instance) dependency.
// It is not the same as the $modal service used above.

.controller('ModalInstanceCtrl', function($scope, $modalInstance, items) {

    $scope.items = items;
    $scope.selected = {
        items: $scope.items
    };

    $scope.ok = function() {
        $modalInstance.close($scope.selected.item);
    };

    $scope.cancel = function() {
        $modalInstance.dismiss('cancel');
    };
})
  • 0
    Вы не можете добиться того же от контроллера?
  • 0
    @Vineet Vineet Как ты имеешь в виду?
Показать ещё 2 комментария
Теги:
bootstrap-modal
ng-repeat

1 ответ

0

Вы не можете получить доступ item объекта в модальной шаблоне, поскольку он составлен в изолированной области действия ребенка в $rootScope, так что это не путь для модальных содержимого наследовать элементы.

Что вы хотите сделать, так это предоставить базовую область для модального экземпляра. Попробуй это:

var modalInstance = $modal.open({
    scope: $scope, // <--- use this scope as the base for new scope
    animation: $scope.animationsEnabled,
    templateUrl: 'myModalContent.html',
    controller: 'ModalInstanceCtrl',
    size: size,
    resolve: {
        item: function() {
            return $scope.item;
        }
    }
});

В вышеприведенном фрагменте модальное обслуживание создаст новую область дочерних объектов из пройденной $ scope, и в этом случае модальная область наследует объекты прототипических объектов.

  • 0
    Я думаю, я понял. Я попробовал вашу версию, однако она не сработала.
  • 0
    Вы можете установить простую демонстрацию plunkr?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню