1

私は Meteor.js を初めて使用するので、次の 2 つの質問について誰か助けていただければ幸いです。矢印をクリックして次のフラッシュカードを表示するフラッシュカードアプリを作成しています。フラッシュカードは事前にシャッフルされており、矢印をクリックしてデッキ全体を確認します。

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);
        }
    }
} )

私の2つの質問:

1)ページが読み込まれるたびにフラッシュカードをシャッフルしたいのですが、それを簡単に(つまり、MongoDBデータベース全体をシャッフルせずに)行う方法を見つける唯一の方法は、フラッシュカードデッキ全体を配列に保存することです.セッション変数。Sessions 変数を使用していない場合、どのように実装しますか? ルートに移動するたびに、またはどこかでシャッフル ボタンをクリックするたびに、デッキをシャッフルする最良の方法は何ですか?

2) wordPage.js ファイルで Session.get / Session.set を使用しています。これらの関数を保存して、wordPage ヘルパーとイベントの両方でアクセスできるようにする方法はありますか? 私はこのようなことをしてみました:

var word = function ( index ) { return Session.get ( 'wordArray' ) [index]; }

ヘルパーとイベント ブロックの外側で、word(index) を使用しようとしています。しかし、単語をグローバル変数にしている場合にのみ機能するようです。

よろしくお願いします。

4

2 に答える 2

0

欠落している詳細について上記の回答を強化するためだけに api.export('WordsAccessor');、package.js に入れる必要があります。

Package.onUse(function(api) {...
于 2016-04-18T11:42:01.490 に答える