我在设置一个包含不同网页并保持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");
最初,这可行,但在更改网页时,它会失败......
答案 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
meteorite
npm install -g meteorite
router
mrt add router
{{renderPage}}
添加到正文/login
现在呈现{{> login}}