[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 メーリングリストの案内