От новичка до гуру: Курсы программирования на CyberDuff

Как я могу использовать шаблоны метеоров с Bootbox?

Как можно использовать шаблоны Meteor с библиотекой bootboxjs?

т.е. у меня есть следующий шаблон

test.html:

<template name="test">
  <input type="text" name="testtext"/>
</template>

у него есть некоторые события,

test.js:

Template.test.events({
'keyup input[name="testtext"]' : function () { console.log('key up in testtext'); }
});

Как вы можете использовать шаблон для создания модального загрузочного окна с событиями?

28.10.2013

Ответы:


1

Вы можете передать Blaze.toHTML(Template.your_dialog_template) в атрибут "messages" вызова bootbox.dialog(), но события не будут работать.

Таким образом, трюк может заключаться в том, чтобы внедрить ваш шаблон в диалоговое окно, когда оно открыто, с помощью Blaze.render().

bootbox.dialog({
        title: "Title",
        message: '<span/>', // bootbox doesn't accept an empty value
        buttons: {
            success: {
                label: "Save",
                className: "btn-success",
                callback: function () {
                    // do tomething

                }
            }
        }
    }
);

// Inject your template inside the dialog box
Blaze.render(Template.dialog_create_cluster, $('.bootbox-body')[0])
25.01.2015
  • И это не страдает от упомянутого здесь красного текста? И если это не так, что, если это изменится в будущем? Я бы рекомендовал использовать Blaze.remove, когда диалоговое окно закрыто. 26.01.2015

  • 2

    Вот пример приложения Meteor, иллюстрирующий:

    • модальные диалоги (bootboxjs)

    • мобильное обнаружение (detectmobilebrowser + yepnope)

    • множественный выбор (плагин jquery Loudev)

    https://github.com/alanning/meteor-modal-example

    Живой пример: http://modal-example.meteor.com/

    29.10.2013
  • Хм. который использует bootbox.alert(...) только в одном месте, это не совсем то, о чем я здесь говорю. Ищете хороший способ использовать шаблоны в bootbox.dialog(...) . Особо следует отметить, что я до сих пор не понял, как получить оба события и установить контекст данных (Spark.render(...) дает события, Template.test({context:'foo'}); устанавливает контекст, но теряет события) ; 30.10.2013

  • 3

    Я не мог получить вызовы Template.templateName.rendered и Template.templateName.events с этим подходом:

    Не удается выполнить rendered и events:

    bootbox.dialog
      title: 'title'
      message: Meteor.render -> Template.template(data: data)
      closeButton: true
    

    Выполняет rendered и events:

    Визуализировать шаблон в div с display:none:

    HTML

    <div id="modalContainer">{{> modalTemplate}}</div>
    

    Перерендерите его по мере необходимости, обновив его данные с помощью Session.set:

    Другой шаблон

    Session.set 'data', this.data
    

    Шаблон модального окна

    Template.modalTemplate.helpers
      data: -> Session.get 'data'
    

    Отобразите полностью обработанный и реактивный шаблон с помощью bootbox.dialog:

    Другой шаблон

    bootbox.dialog
      message: $('#modalContainer')
      title: 'title'
      closeButton: true
    

    Я бы предпочел отобразить шаблон в вызове bootbox.dialog, но я не мог заставить его работать без какого-то странного setTimeout дела. Я также пробовал Spark.render безрезультатно. Я собираюсь изучить bootbox.dialog, чтобы увидеть, будет ли опция callback полезным дополнением.

    20.02.2014

    4
    1. Добавьте bootbox в свое приложение (через метеорит): mrt add bootboxjs
    2. Вы можете передать фрагмент DOM в диалоговую функцию bootbox. Вы можете получить фрагмент DOM из Spark.render(...).

    Пример:

    bootbox.dialog(
      Spark.render(Template.test),
        [{
          "label" : "Ok",
          "class" : "btn-primary",
           "callback": function() {}
        },{
          "label" : "Cancel",
          "class" : "btn",
          "callback": function() {}
        }],
        {
          "header":"Some Dialog box",
          "headerCloseButton":true,
          "onEscape": function() {}
        }
    );
    

    Бонусный пример — рендеринг html, но без каких-либо событий:

    bootbox.dialog(
      Template.test({contextVar:'SomeValue'}), // Set your context values here
        [{
          "label" : "Ok",
          "class" : "btn-primary",
           "callback": function() {}
        },{
          "label" : "Cancel",
          "class" : "btn",
          "callback": function() {}
        }],
        {
          "header":"Some Dialog box",
          "headerCloseButton":true,
          "onEscape": function() {}
        }
    );
    
    28.10.2013
  • Spark.render устарел в пользу UI.render. Для этого требуется передать родительский узел, который сделает ваш пример больше непригодным для использования. Вы знаете, как заставить его работать с Meteor 1.0? 12.11.2014
  • @HaNdTriX Я больше не работаю с метеором ежедневно, большинство моих ответов исчезнут по мере развития метеора. Не стесняйтесь редактировать правильные ответы на месте. 15.11.2014

  • 5

    Используя последнюю версию Meteor, вы можете сделать следующее

    let box = bootbox.dialog({title:'Title',message:'-'});
    box.find('.bootbox-body').remove();
    Blaze.renderWithData(template,MyCollection.findOne({_id}),box.find(".modal-body")[0]);
    

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

    let box = bootbox.dialog({title:'Title',message:'-'});
    box.find('.bootbox-body').remove();
    Blaze.renderWithData(template,function() {return MyCollection.findOne({_id})},box.find(".modal-body")[0]);
    
    19.04.2016
    Новые материалы

    Представляем Narwhal Technologies (Nrwl)
    6 декабря 2016 г. Маунтин-Вью, Калифорния С тех пор, как Виктор Савкин и я (Джефф Кросс) присоединились к команде Angular в Google на заре Angular 1, Angular продемонстрировал феноменальный..

    Путь AWS  — «Изучение машинного обучения — 10 начинающих ИИ и машинного обучения на AWS».
    Универсальный ресурсный центр для изучения искусственного интеллекта и машинного обучения. НОЛЬ или ГЕРОЙ, начните свое путешествие здесь. Получите решения и пройдите обучение у экспертов AWS...

    5 простых концепций Python, ставших сложными
    #заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

    «Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
    Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..