элемент шаблона ui.bootstrap.modal не выбирается?

#angular-ui-bootstrap

#angular-ui-bootstrap

Вопрос:

Я использую ui.bootstrap.modal с шаблоном. В моем шаблоне HTML у меня есть элемент «div», который служит контейнером для стороннего компонента (SlickGrid). При инициализации моего стороннего компонента я указываю, что он содержит элемент, используя выражение выбора jQuery. Однакоселектор, похоже, не может найти мой элемент контейнера при выполнении либо из модального контроллера, либо из моей «открытой» логики обещания, разрешенной modal. Я полагаю, что проблема в том, что мой HTML-диалог еще не добавлен в DOM и, следовательно, не виден контроллеру или «открытому» обещанию. Я должен добавить, что само диалоговое окно отображается просто отлично; просто я не могу ссылаться на его элемент контейнера… любой контекст? Возможно, modal не поддерживает этот вариант использования? Любые мысли / предложения будут оценены!

Спасибо, Гарри

Ответ №1:

Если я не ошибаюсь, ваш вопрос. Вы можете использовать bs.modal.отображается в вашем модальном показанном событии

$(your-modal).on("bs.modal.shown",function(){});

Ответ №2:

У меня возникла эта проблема при использовании bootstrap-table внутри ui.boostrap.modal — когда я инициализирую свой модальный, селектор не смог найти <table> элемент и поэтому не мог быть инициализирован сам.

Ответ состоял в том, чтобы использовать rendered обещание, а не opened . rendered разрешается после добавления шаблона в DOM, позволяя вам выбирать элементы, определенные в шаблоне, как обычно.

Ниже приведен пример того, как была выполнена моя реализация:

Мой взгляд

 <div ng-controller="MyAngularController" ng-init="init()">
    <!-- The actual page content goes here - irrelevant to the example -->

    <script type="text/ng-template" id="myngtemplate.html">
        <table id="mygrid">
            <!-- My bootstrap-table column definitions here -->
        </tabie>
    </script>
</div>
  

Мой JavaScript

 // the below was implemented in my page's AngularJS controller,
// left out the controller implementation to make the example more consise

var modal = $uibModal.open({
    animation: true,
    size: 'lg',
    templateUrl: 'myngtemplate.html'
});

modal.rendered.then(function () {
    // $('#mygrid') could not find the table element before this
    $('#mygrid').bootstrapTable({
        data: getModalData()
    });
});