DRY用于显示不同网址的流星模板

时间:2012-11-19 06:00:21

标签: dry meteor

我在设置一个包含不同网页并保持DRY的简单网站时遇到了问题。

我已经设置了所有内容,所以我的url的最后一个片段是需要在网页的内容部分加载的模板的名称。我现在要做的就是根据网址在特定位置加载该模板。

在任何例子中,他们都这样做:

{{#if showCreateDialog}}
    {{> createDialog}}
  {{/if}}

  {{#if showInviteDialog}}
    {{> inviteDialog}}
  {{/if}}

我想按照

的方式做点什么
{{> {{template_name}} }}

可悲的是,那不起作用。我也尝试过这个:

{{{content}}}

Template.content.content = function () {
var url_frag = Session.get("url_frag");
return Template[url_frag]();
}

这也没有用。请帮忙!

编辑:

HMM。也许,我的错误不是加载模板而是捕获网址:

var TodosRouter = Backbone.Router.extend({
    routes: {
        "*url": "main"
    },
    main: function (url) {
        Session.set("url", url.split('/'))
    }
});

当url_frag未定义时,我得到的错误......

var url_frag = Session.get("url_frag");

最初,这可行,但在更改网页时,它会失败......

2 个答案:

答案 0 :(得分:3)

解决。我刚离开骨干

Template.content.content = function () {
var url = window.location.pathname.split('/');
var url_frag = url.pop()
return Template[url_frag]();

然后在html中:

<template name="content">
    {{{content}}}
</template>

答案 1 :(得分:0)

你也可以在氛围中尝试路由器智能包,它也支持复杂的路由和过滤器。

https://atmosphere.meteor.com/package/router

  1. 使用meteorite
  2. 安装npm install -g meteorite
  3. 使用router
  4. 安装mrt add router
  5. {{renderPage}}添加到正文
  6. 多田! /login现在呈现{{> login}}
  7. 请在此处阅读文档:https://github.com/tmeasday/meteor-router