Как получить доступ к HTML внутри директивы Angular (включение)

Я использую угловой интерфейс. Я пытаюсь уменьшить html-кодирование, создавая многоразовые элементы с угловыми директивами. Я определенно что-то упускаю. Я хочу сделать следующее:

<modal modal-title="Some Title" button-text="Click Me">Modal Content</modal>

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

angular.module('app').directive('modal', function () {
    return {
        templateUrl: 'partials/modal.html',
    restrict: 'E',
    controller: 'modalController',
    controllerAs: 'mCtrl',
    transclude: true,
        link: function postLink(scope, element, attrs) {
            scope.buttonText = attrs.buttonText;
            scope.modalTitle = attrs.modalTitle;
        }
    };
}).controller('modalController', function($scope,$modal,$attrs) {
    var _this = this;
    this.buttonText = $attrs.buttonText;
    this.modalTitle = $attrs.modalTitle;

    this.open = function () {

        var modalInstance = $modal.open({
            templateUrl: 'modal-content.html',
            controller: 'ModalInstanceCtrl',
            controllerAs: 'miCtrl',
            resolve: {
                modalTitle: function() { return _this.modalTitle; }
            }
        });

        modalInstance.result.then(function (selectedItem) {
            //something
        }, function () {
            console.info('Modal dismissed at: ' + new Date());
        });
    };

    this.save = function() {
        //something
    };

}).controller('ModalInstanceCtrl', function ($scope, $modalInstance, modalTitle) {
    this.modalValue = 1;
    this.modalTitle = modalTitle;
    this.ok = function () {
        $modalInstance.close(this.modalValue);
    };

    this.cancel = function () {
        $modalInstance.dismiss('cancel');
    };
});

Вот шаблон (partials/modal.html)

<script type="text/ng-template" id="modal-content.html"> 
    <div class="modal-header"> 
        <h3 class="modal-title">{{miCtrl.modalTitle}}</h3> 
    </div> 
    <div class="modal-body"> {{ mCtrl.content }} </div> 
    <div class="modal-footer"> 
        <button class="btn btn-primary" ng-click="miCtrl.ok()">OK</button> 
        <button class="btn btn-warning" ng-click="miCtrl.cancel()">Cancel</button> 
    </div> 
</script>

<button class="btn btn-default" ng-click="mCtrl.open()">{{mCtrl.buttonText}}</button>

Как получить содержимое элемента в mCtrl.content? Остальное работает как положено, я просто что-то упускаю. Спасибо!

Изменить: кажется, мне нужно использовать трансклюзию, вот что я хочу сделать:

<div class="modal-body"><ng-transclude></ng-transclude></div>

Но я получаю такую ​​​​ошибку, когда открываю модальное окно:

[ngTransclude:orphan] Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: <ng-transclude>


person Z2VvZ3Vp    schedule 12.05.2015    source источник
comment
возможный дубликат Angular включает директиву содержащий ng-шаблон (общий Confirm Modal)   -  person New Dev    schedule 12.05.2015
comment
О, нет. Я надеюсь, что нет, это действительно грязно, хотелось бы, чтобы это работало по-другому.   -  person Z2VvZ3Vp    schedule 12.05.2015
comment
Потратив время на связанный ответ, я не думаю, что есть более простой способ - по крайней мере, не с текущей версией $modal. Если, конечно, вы хотите использовать только небольшой набор шаблонов, то вы можете указать ID шаблона и использовать ng-include в шаблоне модального окна.   -  person New Dev    schedule 12.05.2015
comment
@NewDev, как это будет работать? Я должен был бы сделать кучу шаблонов в файле шаблона?   -  person Z2VvZ3Vp    schedule 12.05.2015
comment
Да, - либо файл, либо <script type="text/ng-template" id="...">   -  person New Dev    schedule 12.05.2015