3

オプション GENERAL、AIR、GROUND、および SEA を含むコンボボックスがあるとします。

<g:select name="group" from="${['GENERAL', 'AIR', 'GROUND', 'SEA']}" valueMessagePrefix="default.category" value="${tipoN}" />

そして、GENERAL、AIR、GROUND、SEA のいずれを選択したかに応じて特定の情報をロードする別のコンボボックス。

GROUNDに 3 つのオプションがあるとしますが、完全に異なるオプションFedEx, USPS, DHLがあります。AIRAIRPLANE, JET, HOT AIR BALLOON

他の名前<g:select>"commodity"

javascript ファイルを作成し、すべてを HTML のように扱うことを考えましたが、Google で調査したところ、思ったほど単純ではありません。

これを行うための最良の方法を知っている人はいますか?? 前もって感謝します!

FG

4

3 に答える 3

3

これには AJAX を使用する必要があるようです。これを行う 1 つの方法は、テンプレートとドメイン オブジェクトの組み合わせを使用することです。

// grails-app/domain/ShippingOption.groovy

class ShippingOption = {
    String method, // can be 'ground', 'sea', 'air', or 'general'
           name    // can be 'fedex', 'ups', etc.

    def options = {
        def meth = params.method ?: "general"
        def comList = ShippingOption.findByMethod(meth)
        render(template:"shippingList", model: [ commodityList: comList ])
    }
}

そしてテンプレート:

<!-- grails-app/views/_shippingList.gsp -->
<g:each var="opt" in="${commodityList}">
    <option value="${opt.name}">${opt.name}</option>
</g:each>

そして、選択ボックスのあるgspで:

<!-- ... other stuff is before here ... -->
<g:select name="method" from="${['GENERAL', 'GROUND', 'SEA', 'AIR']}"
    onchange="${remoteFunction(action:'options', update:'commodity', 
        params:''method=' + this.value' )}" />
<select id="commodity"></select>

私はいくつかの構文を台無しにしたと確信しています。コードを操作するには、これを少しリファクタリングする必要があります。しかし、少なくとも一般的な考え方は理解できました。

それらを使用するには、それらをShippingOptions としてデータベースに追加します。これを行う1つの方法を次に示します。

["fedex", "ups"].each { name ->
    def so = new ShippingMethod(method: "ground", name: name )
    so.save()
}

PS: 配送方法を動的にレンダリングすることもできます。

参照: remoteFunctiong:selecttemplates、およびAJAX

于 2010-09-22T16:05:56.737 に答える
0

UI の再設計とフローの変更を検討します。あなたが説明しているドロップダウンの依存関係は、フォームを分割する必要があることを示唆しており、「ウィザードのような」ソリューションを採用すると、JavaScript がなくても機能する、よりユーザーフレンドリーで堅実なソリューションになります。

于 2010-09-24T08:38:53.013 に答える
0

ここにAngularJSとGrailを使用した実際の例があります:

http://wordpress.transentia.com.au/wordpress/2013/12/24/Keeping-up-with-the-joneses/

(これが適切なSO「スタイル」でない場合はお詫びしますが、何百行ものコードと言葉遣いを投稿することも適切だとは思いません)。

于 2014-08-28T10:45:45.353 に答える