Meteorでブログアプリケーションを作成しようとしています。このブログには、訪問者が投稿を読むだけのメインページと、投稿を編集できる「管理者」パネルとなる別のセクションがあります。ハンドルバーのテンプレートヘルパーを利用しようとしていますが、どこで間違っているのかわかりません。私はアマチュア開発者でもあり、Meteorフレームワークをよりよく学ぼうとしています。私のコードはそのようなものです:
blog.html
<head>
<title>Jeff Lam Tian Hung</title>
</head>
<body>
<h1>Jeff Lam Tian Hung</h1>
<a href="/" class="main">Main Page</a>
<a href="/admin" class="admin">Admin</a>
{{> content}}
</body>
<template name="content">
{{#if currentPage "blog"}}
{{#each posts}}
<h2>{{Title}}</h2>
<p>{{Body}}</p>
{{/each}}
{{/if}}
{{#if currentPage "admin"}}
<h2>{{admin}}</h2>
{{/if}}
</template>
blog.js
// Declaration of Collections
Posts = new Meteor.Collection("Posts");
// Helper variable is for pages
// TODO: changing this var will change the
// page but now how to rerender the page?
var page = "blog";
// Declaration of Template Reactivity Variables
Template.content.currentPage = function (type) {
return page === type;
};
Template.content.posts = function () {
return Posts.find({}, {sort: {Date: 1}});
};
Template.content.admin = function () {
return "This will render admin section";
};
// Router for Pages
var Router = Backbone.Router.extend({
routes: {
"": "main",
"admin": "admin"
},
main: function () {
page = "blog";
},
admin: function () {
page = "admin";
}
});
var BlogRouter = new Router;
Meteor.startup(function () {
Backbone.history.start({pushState: true});
});
publish.js(サーバー側のコードのみ)
Posts = new Meteor.Collection("Posts");
ページは上記のコードでブログ投稿をレンダリングしますが、localhost:3000 / adminにアクセスすると、ページ変数はコード化されたように「admin」に設定されますが、ページ/テンプレートはそれ自体を再レンダリングして「Admin」を表示しません' 文章。
ただし、var page ='admin'を設定してアプリを更新すると、ページはadminメッセージを正常に再レンダリングします。ハンドルバーテンプレートヘルパーを正しく使用して、この種の「ルーティングを使用した1ページのテンプレートの更新」を行っているかどうかはわかりません。助けてくれてありがとう!