1

我无法建立一个包含不同网页并保持干燥的简单网站。

我已经设置好了所有内容,所以我的 url 的最后一个片段是需要加载到网页内容部分的模板的名称。我现在要做的就是根据 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]();
}

这也不起作用。请帮忙!

编辑:

唔。也许,我的错误不是加载模板,而是捕获 url:

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");

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

4

2 回答 2

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>
于 2012-11-20T00:51:49.657 回答
0

你也可以试试大气中的路由智能包,它也支持复杂的路由和过滤器。

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

  1. 安装meteorite使用npm install -g meteorite
  2. 安装router使用mrt add router
  3. 添加{{renderPage}}到正文
  4. 多田!/login现在呈现{{> login}}
  5. 在此处阅读文档:https ://github.com/tmeasday/meteor-router
于 2012-11-21T03:08:49.977 回答