MeteorJS铁路由器"子模板"或重新呈现预防或可选参数

时间:2015-04-29 18:22:48

标签: javascript meteor iron-router

我试图将一个已有两个旧流星项目的许多已弃用的软件包迁移到当前版本。但是我坚持使用铁路由器而且这个:

  1. 路线/map,显示带有标记的交互式地图
  2. 当用户点击标记时,将打开一个具有全宽高度的绝对定位div并显示详细信息页面
  3. 网址应更改为/map/<markerId>,以便用户可以共享网址并使用后退按钮
  4. 持有地图的div应该被销毁或重新渲染,因为用户不应该松开他的地图状态&#34;喜欢缩放和放大回去时滚动
  5. 我尝试了几种方法,但没有找到同时解决第3点和第4点的解决方案。 使用旧的路由器包,它只使用两个路由设置不同的Session变量并呈现相同的模板。

    提前感谢您的想法

2 个答案:

答案 0 :(得分:0)

您可以尝试使用铁路由器to功能的render参数:

this.render('markerdetails', { to: 'yieldname' });

要使用它,您需要在包含地图的模板中指定产量:

{{> yield "yieldname"}}

进一步阅读to参数:https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#rendering-templates-into-regions-with-javascript

如果用户只是打开网址,则不会100%确定会发生什么。您可以检查地图是否已经是可见的,如果不是先渲染地图,然后将标记渲染到产量中。

答案 1 :(得分:0)

您可以尝试从Iron Router切换到Meteorhacks&#39; Flow-Router因为它在路由和渲染之间有更好的分离,并且渲染不是被动的。事实上,Flow-Router根本不处理自己的渲染。相反,你可以使用MeteorHacks&#39;如果您愿意,请Flow-Layout或其他内容。这是Arunoda's article

这里是Flow Router和Layout的一个非常基本的例子。 它尝试尽可能少地渲染,或者如果您愿意,您可以看到如何改变路线但根本不渲染...

FlowRouter.route('/tasks', {
  subscriptions: function(){
    this.register('myTasks', Meteor.subscribe('tasks'))
  },
  action: function() {
    FlowLayout.render('layout1', { // the "layout" holds templates
      top: "header",
      main: "tasks" 
    });
  }
});