0

spry 構文に精通している必要はありませんが、私は SPRY (AJAX ウィジェット) を使用しており、複数の条件を処理する関数を作成しようとしています。

spry:when="{ds_CurrentRowNumber} == {ds_RowNumber} && {ds_RowNumber} < 4"

これを、次のような 4 つの li タグごとに同じ div に新しい ul タグを生成する関数に変えたいと思います。

 <ul spry:repeatchildren="ds1">
   <li spry:if="{ds_RowID} < 4 ">{item}</li>
 </ul>

 <ul spry:repeatchildren="ds1">   
   <li spry:if="{ds_RowID} > 4 && {ds_RowID} < 9  ">{item}</li>
 </ul>

この関数はどのようになりますか? どんな助けでも大歓迎です。

4

1 に答える 1

0

これは通常、モジュラス演算子(Javascriptではパーセント記号-%-)を使用して行われます。

Modulusは、新しい「行」にヒットしたときに正確に通知できる「除算後の剰余」を返します。

したがって、(Spryをまったく知らない)次のようなものです。{ds_RowID}%4 = 0は、新しい行にいるときに通知します。たとえば、行4のモジュラスはゼロの4%4を返します(4を4に分割するとゼロの余り)。5%4のモジュラスは「1」などになります。

したがって、基本的に、モジュラスがゼロの場合は、特別な処理(前のリストが存在する場合はそれを終了)を実行し、新しいリストを開始します。

いくつかの疑似コード:

itemsPerRow = 4最初の行を開始します(

    )すべてのアイテムをループする現在のアイテムを表示する(
  • )currentRowモジュラスitemsPerRowがゼロの場合、またはcurrentRowが行の最後の終わりである場合(
)if currentRow <totalRows --itemsPerRow残りの行が少なくとももう1つある場合は、次の行を開始します()end if end if End Loop

インデックスが1ではなく0で始まる場合は、これを少し変更する必要があるかもしれませんが、理解していただければ幸いです。

于 2009-08-17T15:17:56.537 に答える