Meteor、Handlebars、および Backbone を使用して複数ページのアプリケーションを作成しています。セッション変数を設定するバックボーンを使用してルーターをセットアップしましたcurrentPage
。の値に応じて異なるテンプレートをレンダリングするにはどうすればよいcurrentPage
ですか?
これを行う Template ヘルパー関数を作成できると言われましたが、これにアプローチする方法がわかりません。
Meteor、Handlebars、および Backbone を使用して複数ページのアプリケーションを作成しています。セッション変数を設定するバックボーンを使用してルーターをセットアップしましたcurrentPage
。の値に応じて異なるテンプレートをレンダリングするにはどうすればよいcurrentPage
ですか?
これを行う Template ヘルパー関数を作成できると言われましたが、これにアプローチする方法がわかりません。
currentPage がグローバルで、ページが文字列として保存されている場合、これが機能すると予想されます。
Handlebars.registerHelper('currentPageIs',function(page){
return currentPage == page;
});
// and in the html:
{{#if currentPageIs '/posts'}}
{{> posts}}
{{else}}
{{> homepage}}
{{/if}}
本当に簡単な解決策はここにあります: https://gist.github.com/3221138
しかし、 meteor-routerをインストールすることを強くお勧めします。これには、最初にmeteoriteをインストールする必要があります。
また、公式のルーティング ソリューションがロードマップにあることも知っておいてください。
最良の選択は Iron-Router を使用することですが、テンプレートを変更するための適切なパターンを使用したくない場合は、次のようにします。
//HTML
<body>
{{>mainTemplate}}
</body>
//JS Client Initially
var current = Template.initialTemplate;
var currentDep = new Deps.Dependency;
Template.mainTemplate = function()
{
currentDep.depend();
return current;
};
function setTemplate( newTemplate )
{
current = newTemplate;
currentDep.changed();
};
//Later
setTemplate( Template.someOtherTemplate );
ルートを確認する方法はわかりませんが、可能であれば、提案されたsetTemplate
関数を使用してテンプレートを条件付きで変更できます。