2015-05-05 60 views
14

我正在使用ember.js中的应用程序。我有几个问题给大家。首先让我们讨论一下我的申请要点,然后讨论我面临的问题。Ember js:使用数据在一页上加载多个模板

  1. 应用程序就像一个像“自动CAD”一样的图纸。为此,我正在使用d3.js库
  2. 对于绘图目的,我们有不同的部分,如火,水等等。卫星所有这些部分都有不同的svg容器供绘图。
  3. 这事我有电子邮件一个模块后,这部分到特定的电子邮件ID在三个方面

    3.1当前第明智的电子邮件(也就是说,如果我们在火节绘制然后如果我们发送电子邮件,然后火的SVG部分将作为pdf的一种形式发送)(完成)

    3.2一次在PDF中的所有部分svg内容。 (这里我的实际问题开始)

在这一点上所有部分电子邮件中检索所有部分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

我真的很困惑这个问题。你想获得所有这些小型的嵌入式应用程序,并将它们变成一个合适的应用程序,或者你想创建另一个应用程序来控制你的网站上的现有应用程序? – MilkyWayJoe

+1

感谢您的时间@MilkyWayJoe,请参阅例如让我说有两个链接“首页”和“联系我们”。两者有不同的看法,控制器,模板。而在这两页数据都来自数据库。单独它工作正常。但现在我想要在单个页面中显示这两个页面,但没有链接,也没有点击。总之,我必须将所有这些东西合并到一个页面中。就像这两页我有16个部分,我必须在一个页面中显示所有这些部分。其实我是初学者在ember.js –

+0

@MilkyWayJoe你需要一些代码片段吗? –

回答

4

我相信你想在这里做什么是这样的事情......你需要创建一个路由,说HomeAndContact。在此路线中创建一个模板。你有两个选择这里,使模板类似:

{{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' 
    }); 
    } 
}); 

我希望这有助于。

+0

感谢您的时间@bmeyers!让我试试这个 –

+0

Hi @bmeyers这个解决方案不起作用 –

+0

不工作怎么样?也许你可以提供更多的代码,甚至更好的jsbin – bmeyers

相关问题