Модальность AngularJS не отображается при использовании частичного URL-адреса шаблона

У меня есть модальное окно в частичном файле, которое загружается в мое основное представление с помощью тега ng-include, но шаблон не найден. Я не вижу, чтобы шаблон загружался в консоли или на вкладке сети консоли. Я получаю следующее сообщение: Ошибка: [$compile:tpload] Не удалось загрузить шаблон: rxsignalUpdateModal.html

контроллер:

$scope.open = function (size) {

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

Посмотреть:

<div class="col-md-12 col-lg-12">
    <div class="h4 invisible"></div>
    <div class="rxsignal-chart-bubble" ui-view="rxsignal-chart-bubble"></div>
    <div class="row">
        <div class="col-md-12">
            <div class="panel panel-default">
                <div class="panel-heading">
            <span class="text-muted panel-title">
                {{ Drug.aedrug_name | pascalCaseFilter }} RxSignal
            </span>
                    <button class="btn btn-info btn-mini restoreSortButton pull-right"
                            ng-click="clearLocalStorage()"
                            popover-append-to-body="true" popover-trigger="mouseenter"
                            popover-placement="top" popover="Reload grid with default sorting order">
                        Restore Default Settings
                    </button>
                    <span id="rxsignal-filter-view" ui-view="rxsignal-filter"></span>
                </div>
                <div class="gridStyle" ng-grid="drugRxsignal.options" id="portfolio-rxsignal-grid"></div>
            </div>
        </div>
    </div>
</div>

<div ng-include="app/drug/partials/drug.rxsignal.update.modal.html"></div>

частичный:

<!-- modal -->
<h1> test </h1>
<script type="text/ng-template" id="rxsignalUpdateModal.html">
    <div class="modal-header">
        <h3 class="modal-title letter-title">Modal Title</h3>
    </div>
    <div class="modal-body">
        <div class="letter-body">
            <p>text</p>
        </div>
    </div>
    <div class="modal-footer">
        <button class="btn btn-primary" ng-click="cancel()">OK</button>
    </div>
</script>
<!-- end modal -->

person Daniel Bogart    schedule 27.08.2015    source источник
comment
Ваше значение атрибута ng-include должно быть строкой, т.е. ng-include="'app/drug/partials/drug.rxsignal.update.modal.html'" (обратите внимание на вложенные кавычки)   -  person Phil    schedule 28.08.2015
comment
спасибо, исправил, теперь получаю ошибку: GET localhost:9001/rxsignalUpdateModal.html 404 (не найдено ) и ошибка Error: [$compile:tpload] Failed to load template: rxsignalUpdateModal.html. мой путь неправильный? модальное частичное находится в том же каталоге, что и представление.   -  person Daniel Bogart    schedule 28.08.2015
comment
Вы пытались добавить начальный «/» к идентификатору: '/rxsignalUpdateModal.html'?   -  person cerd    schedule 28.08.2015


Ответы (2)


Решение потребовало некоторых изменений. Я удалил код ng-include и просто добавил полный путь в объект модального экземпляра:

            var modalInstance = $modal.open({
                animation: true,
                templateUrl: 'app/common/partials/rxsignal-update-modal.html',
                controller: 'ModalInstanceCtrl',
                size: size
            });

Затем в партиале шаблона я удалил теги скрипта, чтобы был просто html.

person Daniel Bogart    schedule 28.08.2015

Для правильной работы элемента script/template (text/ng-template) требуется начальный символ «/» или другой путь в атрибуте id.

Справа: <script type='text/ng-template' id='/my-template.html'>

Неправильно: <script type='text/ng-template' id='my-template.html'>

См. plunkr: http://plnkr.co/edit/BA26CP?p=preview.

Angular документы для скрипта:

https://code.angularjs.org/1.3.18/docs/api/ng/directive/script

person cerd    schedule 28.08.2015