Ember js: загрузка нескольких шаблонов на одной странице с данными

Я работаю над приложением в ember.js. У меня есть несколько вопросов для всех вас, ребята. Сначала давайте обсудим мои пункты приложения, а затем, с какими проблемами сталкиваюсь.

  • Приложение представляет собой нечто вроде рисования планов, таких как "auto cad". Для этого я использую библиотеку d3.js
  • Для целей рисования мы имеем разные разделы, такие как Fire, Water и т.д. Satelite. Все эти разделы имеют различный контейнер svg для рисования.
  • После этого у меня есть один модуль для отправки по электронной почте этих разделов на конкретный идентификатор электронной почты тремя способами.

    3.1 Текущий адрес мудрой электронной почты (означает, что если мы рисуем в разделе огня, тогда, если мы отправим электронное сообщение, svg секции пожара отправит как форму pdf) (Готово)

    3.2 В то время все разделы svg контента в PDF. (Здесь начинается моя реальная проблема)

В этом пункте электронной почты по всем разделам я получаю проблему в получении всего раздела svg за раз. Поскольку текущий раздел уже загружен в представление, шаблон с данными, но как я могу получить все шаблоны разделов с его данными чертежа (элементы svg).

Я создал свой маршрут следующим образом

emailPDF = Ember.Route.extend({

    setupController: function(controller, model)
    {
        alert("Controller setup");
        this.controllerFor('fire').set('model', model);
        this.controllerFor('gas').set('model', model);
    },
    renderTemplate: function() {
        this._super();
        this.render('fire', {           // the template to render
            into: 'emailPDF',       // the template to render into
            outlet: 'fire',              // the name of the outlet in that template
            controller: 'fire'        // the controller to use for the template
        });
        this.render('gas', {
            into: 'emailPDF',
            outlet: 'gas',
            controller: 'gas'
        });
    }
});

И шаблон выглядит так:

<div id="fire_test">
    {{outlet 'fire'}}
</div>
<div id="gas_test">
    {{outlet 'gas'}}
</div>

Затем я перехожу по этому маршруту с одного контроллера следующим образом:

this.transitionToRoute('emailPDF');

Но здесь, в шаблоне allSections, я получаю предыдущий шаблон, который я уже открываю вместо места подачи огня и газа, не способного отображать шаблон огня и газа.

Скажите, пожалуйста, если я делаю что-то неправильно...

Ответы

Ответ 1

Я считаю, что вы хотите сделать вот что-то вроде этого... Вам нужно создать маршрут, скажем HomeAndContact. На этом маршруте создайте шаблон. У вас есть 2 варианта, сделайте шаблон примерно следующим:

{{outlet 'home'}}
{{outlet 'contact'}}

Или вы также можете просто сделать:

{{render 'home'}}
{{render 'contact'}}

Я бы посоветовал отказаться от второго варианта, потому что он будет устаревшим/не согласуется с тем, что делает Ember в будущем.

Чтобы сделать первый вариант, вам нужно будет иметь такой код в вашем HomeAndContactRoute:

HomeAndContactRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    this.controllerFor('home').set('model', model);
    this.controllerFor('contact').set('model', model);
  },
  renderTemplate: function() {
    this.render('home', {           // the template to render
      into: 'homeAndContact',       // the template to render into
      outlet: 'home',              // the name of the outlet in that template
      controller: 'home'        // the controller to use for the template
    });
    this.render('contact', {
      into: 'homeAndContact',
      outlet: 'contact',
      controller: 'contact'
    });
  }
});

Надеюсь, это поможет.