meteor передает данные в модальный формат из ссылки

#javascript #twitter-bootstrap #meteor

#javascript #twitter-bootstrap #meteor

Вопрос:

Я пытаюсь передать идентификатор из href в модальный, который открывается при нажатии на ссылку.

У меня модальный вывод в порядке, но вместо идентификатора в ссылке я получаю идентификатор родительской страницы в этом.

Мой код для ссылки

  <table class="table table-striped table-condensed">
   <tbody
           <tr>
               <th>Posted</th>
               <th>ID</th>
           </tr>
           {{#each quotes}}
               <tr>
                  <td>{{submittedText}}</td>
                  <td><a href="#showQuote" class="showQuote" data-toggle="modal">{{_id}}</a></td>
               </tr>
           {{/each}}
  </tbody>
  

Правильный идентификатор цитаты указан в таблице, но я не могу понять, как заставить этот идентификатор цитаты отображаться в открывающемся результирующем модале.

Я попытался перехватить событие click в вспомогательном устройстве следующим образом

   'click #showQuote' : function(t,e) {
    console.log(this);
    console.log(t);
    console.log(e);
    debugger;
  }
  

Но это родительский идентификатор, а не цитируемый (и, похоже, это срабатывает только тогда, когда я все равно закрываю диалог).

Как мне передать это, пожалуйста?

Ответ №1:

Переменная сеанса — один из способов сделать это, но если вы используете пакет peppelg:bootstrap-3-modal, вы можете передать родительский контекст в функцию show.

javascript

 Template.template_with_modal_link.events({
    'click . showQuote': function() {
         Modal.show('<ModalName>', this);    // parent context this
 } });
  

HTML

 <template name="<ModalName>">
    <!-- modal format -->
</template>
  

Ответ №2:

Если вы уже внедрили код для отображения модального режима, вы могли бы использовать переменную сеанса

 <template name="modalstuff">
    ...
   {{#with quoteinfo}}
      MODAL HERE   
      ...
   {{/with}}
</template>

Template.modalstuff.helpers({
    quoteinfo: function() {
        return Session.get("quotedata");
    }
});
  

Затем в вашем шаблоне, где у вас есть ссылка

 Template.template_with_modal_link.events({
    'click . showQuote': function() {
         Session.set('quotedata', this);
     }
});
  

this является ли контекст данных вокруг ссылки showQuote, которая затем будет связана с переменной сеанса с модальным

Комментарии:

1. Если я изменю свою ссылку, присвоив ей id = «showQuote» и перехватываю событие по мере показа (на основе идентификатора), я получаю идентификатор цитаты в обработчике, но у меня не появляется модальный параметр (я получаю фон), потому что приложение пытается показать URL с #showQuote в конце, который не существует. Если я удалю идентификатор и поймаю #showQuote, я получу базовую страницу при выходе из модального режима, ничего при входе …??

2. @PeterNUnn извините, у меня была опечатка в коде при копировании вставки, предполагалось, что он использует класс click .showQuote (у меня был дополнительный пробел после .). Исправлено.

3. Спасибо ok @Akshat, я понял это, но диалоговое окно по-прежнему не открывается. Когда я ввожу идентификатор, он добавляется к URL для ссылки, а модальный не отображается.

4. @PeterNUnn хорошо, возможно, что-то идет не так с привязкой, вы можете вручную показать это с помощью $('#showQuote').modal('show'); в обработчике кликов. Будьте осторожны с id= , вы можете использовать это только один раз, если вы делаете это со своим a тегом, это будет означать, что все они имеют одинаковый id

5. Понял .. спасибо, нужно добавить дополнительный класс к ссылке и превратить их в кнопки, чтобы заставить их работать должным образом (не уверен, почему кнопки, но ссылки не работают).