[mayaa-user:740] Re: mayaa の実装の方法について
suga
[E-MAIL ADDRESS DELETED]
2009年 1月 18日 (日) 13:19:51 JST
suga です。
2009/1/17 <[E-MAIL ADDRESS DELETED]>:
> 1.どのような記述方法を行えば実現できるのでしょうか?
サンプルを文末に記載します。
Mayaa ファイル側に同じ m:id を複数書いても、最初に見つかったもの
しか使用しません。
また、m:id を書いたプロセッサの外側に何かを書いても利用されません。
なお、1.1 からは m:mayaa の直接の子にあるプロセッサのみ HTML と
バインディングされます。
> 2.実装の方針として、どのような考え方で実装をすれば良いのでしょうか?
条件をまとめてからプロセッサに渡すようにすることです。
がんばれば色々できはしますが、後々の見やすさを考えるなら .mayaa ファイルを
シンプルにする方が良いです。
上で挙げたように m:beforeRender でもできますが、もしここの処理が多いなら
Java で書いて自動テストするようにしておく方が良いでしょうね。
パフォーマンスを考えるなら 1.1 系にしなければ大差はありませんけど。
-----------
html
<div id="useRadio">
<span id="visibleA"><input id="radioA" type="radio" name="select"
value="A">あいうえお</span>
<span id="visibleB"><input id="radioB" type="radio" name="select"
value="B">かきくけこ</span>
<span id="visibleC"><input id="radioC" type="radio" name="select"
value="C">さしすせそ</span>
</div>
<div id="useHidden">
<input id="hiddenA" type="hidden" name="select" value="A">あいうえお
<input id="hiddenB" type="hidden" name="select" value="B">かきくけこ
<input id="hiddenC" type="hidden" name="select" value="C">さしすせそ
</div>
-----------
mayaa
<m:beforeRender><![CDATA[
var X = 1;
var Y = false;
var aChecked = true;
var bChecked = true;
var cChecked = true;
var aVisible = (X == 1) || (X == 3);
var bVisible = (X == 1) || (X == 2) || (X == 3);
var cVisible = (X == 2) || (X == 3);
var useRadio = (X != 3) || Y;
]]></m:beforeRender>
<m:if m:id="visibleA" test="${aVisible}" />
<m:if m:id="visibleB" test="${bVisible}" />
<m:if m:id="visibleC" test="${cVisible}" />
<m:if m:id="useRadio" test="${useRadio}" />
<m:if m:id="useHidden" test="${useRadio == false}" />
<m:echo m:id="radioA">
<m:if test="${ aChecked }">
<m:attribute name="checked" value="checked" />
</m:if>
</m:echo>
<m:echo m:id="radioB">
<m:if test="${ bChecked }">
<m:attribute name="checked" value="checked" />
</m:if>
</m:echo>
<m:echo m:id="radioC">
<m:if test="${ cChecked }">
<m:attribute name="checked" value="checked" />
</m:if>
</m:echo>
<m:echo m:id="hiddenA">
<m:attribute name="value" value="A" />
</m:echo>
<m:echo m:id="hiddenB">
<m:attribute name="value" value="B" />
</m:echo>
<m:echo m:id="hiddenC">
<m:attribute name="value" value="C" />
</m:echo>
--
suga ( [E-MAIL ADDRESS DELETED] )
mayaa-user メーリングリストの案内