【发布时间】:2015-03-06 01:17:35
【问题描述】:
所以我喜欢 Meteor,但 Iron Router 有几个问题。这次似乎我无法让 Iron Router 将模板渲染到屈服区域。最初一切都很好,但是当我点击一个链接回家时({{pathFor ...}} URL 发生了变化,但视图中没有任何变化。这很奇怪,因为我已经检查过它正在调用路由并且我已明确编写并测试 this.render('...') 以尝试强制它呈现我想要的模板(这不起作用)。此外,一旦使用更改的 URL 重新加载页面,它就会正确呈现(即呈现主页)。任何帮助将不胜感激。谢谢!
这里是 router.js(更新):
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading'
});
//Basic Routes
Router.route('/',function(){
this.render('main');
},{name:"main"});
Router.route('/Board',function(){
this.render('board');
},{name:"board"});
Router.route('/Board/:chat',function(){
this.render('board');
},{name:"board.chat"});
//On before actions
var OnBeforeActions = {
loginRequired: function(){
if(!Meteor.userId()) {
this.render('main');
}else{
this.next();
}
},
mobileOrDesktop: function(){
if(findBootstrapEnvironment() != 'xs'){
this.render('chat',{to:'chat'});
}else{
this.render('chat');
}
this.next();
}
};
Router.onBeforeAction(OnBeforeActions.mobileOrDesktop, {
only: ['board','board.chat']
});
Router.onBeforeAction(OnBeforeActions.loginRequired, {
only: ['board','board.chat']
});
Router.onBeforeAction('loading');
//Bootstrap state helper
function findBootstrapEnvironment() {
var envs = ["xs", "sm", "md", "lg"],
doc = window.document,
temp = doc.createElement("div");
doc.body.appendChild(temp);
for (var i = envs.length - 1; i >= 0; i--) {
var env = envs[i];
temp.className = "hidden-" + env;
if (temp.offsetParent === null) {
doc.body.removeChild(temp);
return env;
}
}
return "";
}
这是我的布局,产量是:
<template name="layout">
<!--Desktop-->
<div class="hidden-xs full-height">
{{> navbar}}
{{> notifications}}
{{> yield}}
</div>
<!--Mobile-->
<div class="hidden-sm hidden-md hidden-lg">
{{> notifications}}
{{> yield}}
</div>
</template>
<template name="loading">
Loading...
</template>
这是包含另一个产量的文件:
<template name="board">
<!--Desktop-->
<div class="container hidden-xs full-height">
<div class="row" style="height:90%;">
<!--Projects-->
<div class="col-sm-4 full-height">
{{> projects}}
</div>
<!--Chat-->
<div class="col-sm-8 full-height">
{{> yield "chat"}}
</div>
</div>
<div class="row" style="position:absolute;bottom:0px;left:20px;">
{{> footer}}
</div>
</div>
<!--Mobile-->
<div class="hidden-sm hidden-md hidden-lg full-width">
<!--Projects-->
{{> projects}}
</div>
</template>
谢谢!!!
【问题讨论】:
-
首先,您的代码有点过时了。 Iron 路由器 API changed since version 1.0。你能先更新一下,看看有没有帮助?其次,为了告诉您更多信息,我们可能还需要向您提供
html代码。 -
非常感谢。我更改了路由语法,但没有发生任何不同。
标签: javascript meteor render iron-router