2013-05-26 45 views
3

我目前正在做一個meteorjs站點。但是,我有一個正確渲染網站內容的問題(因爲我有一個固定的側邊欄)。如何動態呈現模板內容

//layout.html

<head> 
    <title>App</title> 
</head> 

<body> 
    //render helper 
    {{renderPage layout}} 
</body> 

//route.js

Meteor.Router.add({ 
    '/': 'index', 
    '/admin': 'admin', 
    '/search': 'search', 
    '/contact': 'contact', 
    '/login':'login', 
    '/logout':'logout', 
    '/registration': 'registration', 
    '/admin/listUser': 'listUser', 
    '/admin/addUser': 'addUser', 
    '/admin/editUser': 'editUser', 
    '/admin/delUser': 'delUser', 
    '/admin/listPost': 'listPost', 
    '/admin/addPost': 'addPost', 
    '/admin/editPost': 'editPost', 
    '/admin/delPost': 'delPost', 
    '/admin/viewPost': 'viewPost', 
    '/admin/modPost': 'modPost', 
    '/admin/listLoc': 'listLoc', 
    '/admin/addLoc': 'addLoc', 
    '/admin/delLoc': 'delLoc', 
    }) 

    // to determin which page to render 
    Template.body.helpers({ 
    layout: function() { 
     switch (Meteor.Router.page()) { 
     case 'index': 
      return 'index'; 
     case 'admin': 
      return 'admin'; 
     case 'login': 
      return 'login'; 
     case 'logout': 
      return 'logout'; 
     case 'registration': 
      return 'registration'; 
     case 'search': 
      return 'search'; 
     case 'contact': 
      return 'contact'; 
     default: 
      return 'index'; 
     } 
    } 
    }); 

admin.html

//sidebar 
<template name="adminSide"> 
<ul class="nav nav-list"> 
    <li class="nav-header">User Management</li> 
    <li><a href="/admin/listUser" id="linkValue">List Users</a></li> 

    <li class="nav-header">Posting Management</li> 
    <li><a href="/admin/listPost">List Posting</a></li> 
    <li><a href="/admin/addPost">Add New Posting</a></li> 
    <li><a href="/admin/modPost">Moderate Posting</a></li> 

    <li class="nav-header">Location Management</li> 
    <li><a href="/admin/listLoc">List Locations</a></li> 
    <li><a href="/admin/addLoc">Add New Locations</a></li> 

    <li class="divider"></li> 
    <li><a href="/logout">Log Out</a></li> 
    </ul> 
</template> 

//landing page 
<template name="adminLand"> 
    <div class="page-header"> 
     <h1>Welcome to the Admin Panel!</h1> 
    </div> 
     <p class="lead">To begin, click on any link on the left.</p> 
</template> 

//page to render if click on sidebar 
<template name="listUser"> 
</template> 

<template name="admin"> 
    {{> navigationAdm}} 
<div class="container"> 
<div class="row"> 
    <div class="span3"> 
     {{>adminSide}} 
    </div> 
    <div class="span9"> 
     //how do I make this render another template when the sidebar is clicked? 
     {{renderPage}} 
    </div> 
    </div> 
    <hr> 
    {{>footer}} 
</div> 
</template> 

我使用潰敗呃來自隕石。提前致謝!

回答

1

從隕石使用路由器,你需要做一個文件,你的路線:

客戶端/ router.js

Meteor.Router.add({ 
    '/admin': 'adminLand', 
    '/admin/listUser':'listUser', 
    '/admin/listPost':'listPost', 
    '/admin/addPost':'addPost', 
    '/admin/modPost':'modPost' 
    '*': 'not_found' 
}); 

然後,你需要在你的頁面創建一個區域,你想要的內容來與{{renderPage}}

<div class="span9"> 
    //how do I make this render another template when the sidebar is clicked? 
    {{renderPage}} 
</div> 

然後,只需爲每個「路徑」的模板,你已經做了adminLand

HTML文件

<template name="listUser"> 
    <h2> List users</h2> 
</template> 

<template name="listPost"> 
    <h2> List posts</h2> 
</template> 

<template name="addPost"> 
    <h2> Add Post</h2> 
</template> 

<template name="modPost"> 
    <h2> Mod Post</h2> 
</template> 
+0

您好,我想我的循環模板 \t {{#each模板}} \t \t {{renderPage}} \t {{/每}} 但是當我的所有模板具有不同的名稱並且不會一次渲染所有模板時,我如何循環模板? –

+0

你不必循環你的模板。使用上面的安排,路由器將匹配URL到任何通過'