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 (例如,您从 URL 设置,可能使用Meteor Router),那么代码可能会正常工作!

因此,例如,/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 回答