2015-01-08 82 views
0

所以我喜歡流星,但鐵路路由器有幾個問題。這一次,似乎我無法讓Iron Router將模板渲染到屈服區域。最初一切都呈現良好,但是當我點擊一個鏈接回家({{pathFor ...}}時,網址改變了,但沒有任何改變,這是非常奇怪的,因爲我已經檢查到它正在調用路由,而我已經明確地編寫並測試了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> 

謝謝!

+0

首先,你的代碼有點過時了。鐵路由器API [從版本1.0更改](https://github.com/EventedMind/iron-router/blob/devel/Guide.md)。你可以先更新它,看看它是否有幫助?其次,爲了告訴你更多,我們可能需要爲你提供'html'代碼。 –

+0

非常感謝。我改變了路由語法,但沒有什麼不同。 – ggobieski

回答

0

所以這裏的問題,經過一堆擺弄和什麼不是,我意識到有兩個產量(雖然一個是隱藏的)不支持。愚蠢的錯誤!確保你只有一個產量部分!

+0

我也有這個問題,不得不將我的模板分成更小的塊,並使用許多「旁白」,比如你的'{{> yield「chat」}}'來使它工作。儘管恕我直言,這可能是最好的 – dayuloli