2016-05-02 13 views
0

反応計算のセッション変数の値をifにする必要があり、値が変わると計算が再実行されます。 meteor docsによれば、このユースケースはSession.equalsに最適です。これまでのところは良い、これは私のようにSession.equalsを呼び出して、私の反応計算コードを持っている:うまく機能するために使用Session.equalsはもはや(完全に)反応しませんか? [流星]

if (!Session.equals(key, undefined)) { 
    // now I know 'key' is defined 
    ... 
} 

コードが、何らかの理由でそれがそう停止しました。今すぐ([email protected]のバージョン)keyのセッション値は変更されますが、リアクティブ計算は再実行されません。期待されるとき、計算は現在、再実行を取得している - 働く

if (!!Session.get(key)) { 
    ... 
} 

:私は、コードを交換してきた原因を把握する私の試みの一つで

Sesssion.get()はなぜ動作するのですか?誰でも教えてください。Session.equals()はありませんか?

関連性があります:セッション変数の値は変更されますが、常に「定義されています」(空でない文字列から別の文字列に変更されるなど)。計算を再トリガーするには十分でしょうか? IOW、おそらくSession.equalsは、1つの定義された値から別の定義された値に変更された値を知るのに十分に「巧妙」なので、計算の再実行が必要でないことを証明します。

答えて

2

あなたは実際にあなた自身に答えました。 Session.equalsは、値が変更された場合にのみ計算を再実行する最適化バージョンです。値が 'defined'から変更されないので、計算を再実行しません。

+0

私はそれが当てはまると思っていましたが、私はそれをどのように実装するのかよく分かりませんでした。彼らは 'Session.equals()'に与えられたSessionキーの値を評価し、第2のパラメータと外部的に比較する必要があります。その場合、計算のどこかの値に比較参照を格納する必要があります。しかし、第2のパラメータの値がその間に変化していないと仮定することはできますか? – tivoni

関連する問題