我是 Meteor.js 的新手,非常感谢任何人在以下两个问题上提供的任何帮助。我正在制作一个抽认卡应用程序,您可以在其中单击箭头以显示下一张抽认卡。抽认卡是事先洗好的,你可以通过点击箭头浏览整个牌组。
Router.route ( '/', function () {
Session.set ('wordArray', _.shuffle( Words.find().fetch() ) );
Session.set ( 'index', 0 )
this.render('wordPage');
})
我的wordPage模板如下:
<template name="wordPage">
<div class="post">
<div id = "arrow-right" ></div>
{{ > wordItem word index }}
</div>
</template>
我的 wordPage.js 如下:
Template.wordPage.helpers ({
word: function ( index ) {
return Session.get ( 'wordArray' ) [ index ] ;
},
index: function () { return Session.get ( 'index' ); },
})
wordPage 通过上述方法将单词和索引传递给更详细的模板。
Template.wordPage.events ( {
"click #arrow-right": function ( e ) {
if ( Session.get ('index') < Session.get ('wordArray').length-1 ) {
console.log(Session.get('index'));
Session.set ( 'index', Session.get ( 'index' ) + 1);
}
}
} )
我的两个问题:
1)我想在每次页面加载时对抽认卡进行洗牌,而我能弄清楚如何轻松做到这一点的唯一方法(即,不洗牌整个 MongoDB 数据库)是通过将整个抽认卡牌组保存在一个数组中会话变量。在我不使用 Sessions 变量的情况下,如何实现一些东西?每次我进入根目录或单击某处的洗牌按钮时,洗牌的最佳方法是什么?
2) 我在 wordPage.js 文件中大量使用 Session.get / Session.set。有什么方法可以保存这些函数以便在 wordPage 助手和事件中都可以访问?我试着做这样的事情:
var word = function ( index ) { return Session.get ( 'wordArray' ) [index]; }
在 helpers 和 events 块之外,然后只是尝试使用 word(index)。但它似乎只有在我将 word 设为全局变量时才有效。
提前非常感谢。