web-dev-qa-db-ja.com

繰り返しグループを使用して、スペースで区切られたリストを反復処理することはできますか?

リピートグループはいくつかの異なる方法で動作できることを知っています。

  1. 固定の繰り返し回数(繰り返し回数は隠し変数から読み込まれた整数です)
  2. 指定されていないリピートグループがある場合(モバイルワーカーがループを終了するまでリピートグループが継続します)
  3. モデル反復IDクエリ(これは、主にcasedbから取得したケースを反復するために使用されるのを見てきました)

スペースで区切られたアイテムのリストを反復処理し、リピートグループ内の非表示変数として後続の各アイテムにアクセスできる4番目のオプションはありますか?

2
Jessica Long

反復グループは、Model Iterationクエリを使用してスペースで区切られたリストを反復処理できますが、他の反復グループの自動拡張と同様に、これはfixedがフォームを開いたときにのみ発生します。

つまり、繰り返しにすべてのpossible選択のエントリが含まれるパターンに従い、内部グループの周りに表示条件を使用して要素を非表示にしない限り、フォームのユーザー入力によってリストを決定することはできません選択されていません。

これらの警告を使用すると、スペースで区切られたリストへのパスをモデル反復クエリ自体として提供することで、実際にこれを簡単に実現できます。モデルの反復は、実際には、内部的にスペースで区切られたリストに対して実行されます。

join(' ', instance('something')/your/iteration/query)

入力の操作。そのため、1つの要素のみでクエリを提供する場合、結合はスペースで区切られたリストを返し、通常どおり続行します!

編集:言及するのを忘れた-このメソッドを使用して、フォーム内の質問を参照する場合(私の例のようなインスタンスではなく)する必要がある:

  • 計算ではなくデフォルト値を使用して設定する
  • 来る必要があるbeforeモデル反復ループ。
3
Clayton Sims

モデルを反復せずに、通常の繰り返しグループを使用する方が合理的かもしれません。繰り返し回数をスペースで区切られたリスト内の単語の数と等しくしてから、n番目の単語を各繰り返しに読み込むことができます。この戦略は、リストがフォーム内で計算される場合でも機能します。

単語数を計算するには、count-selected()関数を使用します。 n番目のWordを取得するには、selected-at()関数を使用します。

2
Jennifer