2014-09-08 3 views
0

Я пытаюсь использовать Blaze исключительно в альтернативе Iron-Router, потому что я хочу сохранить контроль над телом HTML-страницы.«Маршрут» через шаблоны с Blaze - Meteor

Пока что я могу отобразить другие шаблоны в div contentHolder.

Однако я не могу удалить их, так как я не могу найти текущий вид, связанный с contentHolder, чтобы использовать Blaze.remove(renderedView). Таким образом, я получаю приложенные страницы, когда я щелкаю по списку.

Мой HTML выглядит следующим образом:

<head> 
    <title>routeTest</title> 
</head> 

<body> 
    <h1>Button menu</h1> 
    {{> buttonMenu}} 
    <div id="contentHolder"> 
    </div> 
</body> 

<template name="buttonMenu"> 
    <ul> 
     <li id="home">Home</li> 
     <li id="calendar">Calendar</li> 
     <li id="history">History</li> 
    </ul> 
</template> 

<template name="home"> 
    <h1>Home template is now rendered</h1> 
</template> 

<template name="calendar"> 
    <h1>Calendar template is now rendered</h1> 
</template> 

<template name="history"> 
    <h1>History template is now rendered</h1> 
</template> 

И мой файл .js выглядит следующим образом:

Template.buttonMenu.events({ 
'click #home': function(){ 
    console.log(Blaze.getView(document.getElementById("contentHolder")).name); 
    Blaze.render(Template.home, document.getElementById("contentHolder")); 
}, 

'click #calendar': function(){ 
    console.log(Blaze.getView(document.getElementById("contentHolder")).name); 
    Blaze.render(Template.calendar, document.getElementById("contentHolder")); 
}, 

'click #history': function(){ 
    console.log(Blaze.getView(document.getElementById("contentHolder")).name); 
    Blaze.render(Template.history, document.getElementById("contentHolder")); 
}, 
}); 

ответ

0

Я побежал в обходной путь: это не совсем то, что я хотел, как я хотел использовать Blaze's remove, но это похоже на работу очень хорошо:

Template.buttonMenu.events({ 

'click #home': function(){ 
document.getElementById("contentHolder").innerHTML = ""; 

    Blaze.render(Template.home, document.getElementById("contentHolder")); 
    console.log(Blaze.getView(document.getElementById("contentHolder"))); 

    Session.set("currentPage", "home"); 
}, 

'click #calendar': function(){ 
document.getElementById("contentHolder").innerHTML = ""; 

    Blaze.render(Template.calendar, document.getElementById("contentHolder")); 
    console.log(Blaze.getView(document.getElementById("contentHolder"))); 

    Session.set("currentPage", "calendar"); 
}, 

'click #history': function(){ 

document.getElementById("contentHolder").innerHTML = ""; 

    Blaze.render(Template.history, document.getElementById("contentHolder")); 
    console.log(Blaze.getView(document.getElementById("contentHolder"))); 

    Session.set("currentPage", "history"); 
}, 

});

+0

Это интересный вопрос, я думаю, вы можете оставить его открытым :) Я думаю, что есть лучший способ, чем взломать его :) –