2015-01-08 4 views
0

Так что я люблю Метеор, но у меня было несколько проблем с Iron Router. На этот раз кажется, что я не могу заставить Iron Router отобразить шаблон в области доходности. Первоначально все делает отлично, но когда я нажимаю ссылку, чтобы вернуться домой ({{pathFor ...}}, URL-адрес изменяется, но ничего не меняется в представлении. Это очень странно, поскольку я проверил, что он вызывает маршрут, и я явным образом написал и протестировал this.render ('...'), чтобы заставить его отобразить шаблон, который я хочу (это не работает). Кроме того, он корректно отображается после перезагрузки страницы с измененным URL (т. е. он отображает . домашняя страница) Любая помощь будет высоко ценится СпасибоIron Router Not Rendering Template in Выход

Вот 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 Iron Router [изменен с версии 1.0] (https://github.com/EventedMind/iron-router/blob/devel/Guide.md). Можете ли вы сначала его обновить и посмотреть, помогает ли это? Во-вторых, чтобы рассказать вам больше, нам, вероятно, понадобится также ввести код 'html'. –

+0

Большое спасибо. Я изменил синтаксис маршрутизации, но ничего другого не произошло. – ggobieski

ответ

0

Итак, вот проблема, после путаницы, а что нет, я понял, что наличие двух уроков (хотя один скрыт) не поддерживается. Глупая ошибка! Удостоверьтесь, что у вас есть только один раздел урожая!

+0

У меня тоже была эта проблема, пришлось разбить мой шаблон на более мелкие куски и использовать множество «асидов», например, ваш «{{> yield« chat »}}', чтобы он работал. Это, наверное, самое лучшее, хотя ИМХО – dayuloli