![]() | tech note |
| 自分をリファクタリング中。 |
Mayaaで、特定のテーブル列の表示/非表示の制御にはまる。
こんなテーブルがあって、
| 列A | 列B | 列C |
|---|---|---|
| データA | データB | データC |
<m:if m:id="visible" test="${条件}" /><table border="1">
<tr>
<th>列A</th>
列B
<th>列C</th>
</tr>
<tr>
<td>データA</td>
データB
<td>データC</td>
</tr>
</table><m:if m:id="visible" test="${条件}" replace="false" /><table border="1">
<tr>
<th>列A</th>
<th id="xxx">列B</th>
<th>列C</th>
</tr>
<tr>
<td>データA</td>
<td id="xxx">データB</td>
<td>データC</td>
</tr>
</table><table border="1">
<tr>
<th>列A</th>
<th id="xxx"></th>
<th>列C</th>
</tr>
<tr>
<td>データA</td>
<td id="xxx"></td>
<td>データC</td>
</tr>
</table><table border=1>
<tr>
<th>列A</th>
<th id="visible">
<span id="th">列B</span>
</th>
<th>列C</th>
</tr>
<tr>
<td>データA</td>
<td id="visible">
<span id="td">
<span id="datab">データB</span>
</span>
</td>
<td>データC</td>
</tr>
</table> <m:if m:id="visible" test="${条件}" />
<m:element m:id="th" name="th" />
<m:element m:id="td" name="td" />
<m:write m:id="datab" value="データBです" /><m:if m:id="visible" test="${条件}" /><m:if m:id="visible" test="${条件}">
<m:echo><m:doBody /></m:echo>
</m:if>遅い反応ですが は以下のように書けます。 td や th を出すために使っている span は不要です。 m:echo は他のプロセッサの内側に書いてもテンプレートのタグを出力できること、ただしその場合 m:doBody を書かないとボディが処理されないこと、がポイントです。
sugaさん、ご教示ありがとうございます。 コメントがうまく反映されなかったみたいですが、m:echoとm:doBodyをヒントに考えてみたところ、以下のような方法でうまくいきました。 <m:if m:id="visible" test="${条件}"> <m:echo><m:doBody /></m:echo> </m:if> おかげさまでm:elementなんてしなくてよくなりました。 ありがとうございました。また教えてください。