1. 画面で定義した変数=local変数

lab.jsを使用していて,以外のハマりやすいのが変数の継承についてです。ある画面で取得した情報を別の画面でも使用したいといった質問は公式Skack チャンネルでも多くみられるようです。

上記の方法では,「Screen1」で取得したパラメータ(変数)は,「Screen2」で利用することはできません。「this.parameters.XXXX = XXX」という書き方でScreen1のScriptsタブに書くと,結果には出力されるので,なぜScreen2で使えないのかでハマると思います(私もハマりました)。

原因としては,各画面で取得したパラメータ(変数)は画面内だけで使えるローカル変数だからだと思われます。これは見落としがちなのですが,Scriptsを使う上でとても重要です。それでは,複数の画面で同じパラメータを使いたい場合にはどうすれば良いかというと,各画面のコンポーネントよりも上位のSequenceやLoopコンポーネントのScriptsタブで宣言をする必要があります。

以下のように「Sequence」コンポーネントのScriptsタブで「this.parameters.feedback」を宣言します。この一手間を加えることで,feedbackパラメータを,Sequenceコンポーネントにネストされた(まとめられた)複数の画面で使うことが出来ます。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7ba9b0d1-eacc-4314-bc22-2b23709ac7b0/Untitled.png

2. Global変数について

下記の小林先生のチュートリアルで紹介されているGlobal変数を使えば,実験全体を通して同じパラメータを取得することが出来るでしょう。詳しくは下記のリンク先の説明をご参照ください。

実験・調査を通して参照できる変数の作成