2

Meteor、Handlebars、および Backbone を使用して複数ページのアプリケーションを作成しています。セッション変数を設定するバックボーンを使用してルーターをセットアップしましたcurrentPage。の値に応じて異なるテンプレートをレンダリングするにはどうすればよいcurrentPageですか?

これを行う Template ヘルパー関数を作成できると言われましたが、これにアプローチする方法がわかりません。

4

3 に答える 3

1

currentPage がグローバルで、ページが文字列として保存されている場合、これが機能すると予想されます。

Handlebars.registerHelper('currentPageIs',function(page){
    return currentPage == page;
});

// and in the html:
{{#if currentPageIs '/posts'}}
    {{> posts}}
{{else}}
    {{> homepage}}
{{/if}}
于 2012-12-19T03:59:58.297 に答える
0

本当に簡単な解決策はここにあります: https://gist.github.com/3221138

しかし、 meteor-routerをインストールすることを強くお勧めします。これには、最初にmeteoriteをインストールする必要があります。

また、公式のルーティング ソリューションがロードマップにあることも知っておいてください。

于 2012-12-19T04:00:37.240 に答える
0

最良の選択は 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関数を使用してテンプレートを条件付きで変更できます。

于 2014-03-30T18:06:23.540 に答える