web-dev-qa-db-ja.com

フォームが開かれたときに遅い計算条件が実行されないようにする

フォームには非表示の値で多くの計算条件がありますが、質問「food_not_in_list」=「yes」の場合にのみ評価する必要があります。これらの計算は、開いたときに起動するため、フォームを遅くしています。どちらか:

  1. 表示されない値に表示条件を追加して、計算されないようにしますか?

  2. 条件をチェックするifステートメントでそれらをラップします...計算条件= if(food_not_in_list!= 'yes'、 ''、do-the-big-calculate)

4
Nick Nestle

残念ながら、宣言型ロジックの難しい部分は、処理がいつ行われるかを判断するのが少し難しいことです!

質問に答えるには:

  • falseである非表示値の表示条件は、非表示値の計算の実行をnot禁止します。表示条件が満たされているかどうかに関係なく、すべての計算が実行されます。

  • 一方、計算の内部(または表示条件など)if()ステートメントdo「短絡論理」、つまり、使用されない場合は実行されません。

    • これは、論理演算子andおよびorにも当てはまります。

例:

計算式には隠された値があります:long_expensive_calc()

代わりに式を設定する

if( #form/time_to_go = 'yes' , '', long_expensive_calc())

time_to_goyesに設定されるまで、「高価な」部分が実行されないようにします。

2
Clayton Sims