0

私は Meteor を初めて使用し、 Transitionerを使用して最初の流星アプリを構築しようとしています。

だから私がやろうとしているのは、別のテンプレートに渡された文字列が何かに等しいときに別のテンプレートをロードすることです。HTML コード:

<template name="onePage">
  {{#if itIs "teams"}}
    {{> teams}}
  {{/if}}
  {{#if itIs "players"}}
    {{> players}}
  {{/if}}
</template>
<template name="teams">
  <h2>These are the TEAMS</h2>
</template>
<template name="players">
  <h2>These are the PLAYERS</h2>
</template>

JS コード:

Template.onePage.itIs = function(passed) {
  return this === passed;
};

これは何らかの理由で機能せず、その理由がわかりません。唯一のポイントは、onePage テンプレートに渡される "this" が (URL からの) 文字列であることです。この文字列が「teams」の場合はチームのテンプレートをロードし、「players」の場合はプレーヤーのテンプレートをロードします。

それと同じくらい簡単です!:-)

残念ながら、この単純な問題を解決することはできません。

皆さんが私の問題を理解し、助けてくれることを願っています!

よろしくパトリック

4

1 に答える 1

1

コールバックには何がthisありますか?Template.onePage.itIs

これを Session に変更すると (たとえば、Meteor Routerを使用して URL から設定する)、コードはおそらく問題なく動作します!

したがって、たとえば、/teams URL は showThisPage という名前のセッションを「teams」に設定し、/players URL は showThisPage セッションを「players」に設定しTemplate.onePage.itIs、渡された値をこのセッションに対して事前にチェックします。

このようなもの(テストせずにスタックオーバーフローに直接入力していますが、動作するはずです):

Meteor.Router.add({ 
   '/teams': function() { Session.set('showThisPage', 'teams'); }, 
   '/players': function() { Session.set('showThisPage', 'players'); } 
});

Template.onePage.itIs = function(passed) {
  return Session.get('showThisPage') === passed;
};

私が言ったようにテストされていませんが、正しい方向に向けられるはずです。

(そして、セッションを使用する代わりに Meteor.Router.page() を使用することもできますが、それについてはMeteor Router ページですべて読むことができます。)

于 2013-07-02T22:25:40.670 に答える