1

既存のモジュールを使用してhtmlテンプレートにリストを入力しようとしています

    @{Nav.list.map( l => 
        l.id match {
            case "Art" => { <li id="art"><span>Articles</span></li> }
            case "Due" => { <li id="toggle"><a href="javascript:void(0)" title="Links"><span>Links</span></a>
                                <div id="drawer">
                                    <div id="drawerContent" style="display:none;">
                                        <ul>
                                            <li><a href="#" title="link hover"><span>link title 2</span></a></li>
                                            <li><a href="#" title="link hover"><span>link title 3</span></a></li>
                                            <li><a href="#" title="link hover"><span>link title 4</span></a></li>
                                        </ul>
                                    </div>
                                </div>
                            </li> } 
            case _ => {     <li id="@l.id"><a href="@l.href" title="@l.title"><span>@l.title</span></a></li> }
        } )}
    

@は最後のケースのエスケープ文字として機能せず、代わりに@ l.idなどとして解析されます。私は元々、非常に冗長な括弧を含むネストされたif elseステートメントでこれを実行しましたが、機能しましたが、目にはあまり良くありませんでした。フォーマッターはネストされたscala構造に問題がありますが、よくわかりません。

mapの代わりにforを使用して、match構文を囲んでエスケープしようとしましたが、コンパイルされますが、問題はまだ残っています

4

1 に答える 1

1

ここでの問題は、@ {}を実行するときにscalaの世界にいることだと思います。したがって、最後のケースでは次のことができます。

case _ => <li id={l.id}><a href={l.href} title={l.title}><span>{l.title}</span></a></li>

あるいは、私はあなたができると思います: @Nav.list.map( l => ... )

于 2012-08-14T16:38:29.180 に答える