Я новичок в 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? Каков наилучший способ перетасовывать колоду каждый раз, когда я захожу в root или где-нибудь нажимаю кнопку перемешивания?
2) Я использую Session.get/Session.set МНОГО в файле wordPage.js. Есть ли способ сохранить эти функции, чтобы они были доступны как в помощниках wordPage, так и в событиях? Я попытался сделать что-то вроде этого:
var word = function ( index ) { return Session.get ( 'wordArray' ) [index]; }
за пределами блока помощников и событий, а затем просто пытается использовать слово (индекс). Но похоже, что это работает, только если я делаю слово глобальной переменной.
Большое спасибо заранее.