簡體   English   中英

Grails使用gsp片段作為javascript函數的html模板

[英]Grails use gsp fragment as html template for javascript function

我試圖在我的應用程序上處理一對多表單映射。

根據這篇文章,我創建了類似的代碼:但是,我不想將html放在javascript中,並且想使某些東西可重用,所以我創建了一個小的taglib來處理一對多關聯。 此taglib接受代表輸入字段行的gsp片段路徑作為輸入,如下所示:

<div class="form-group">
<div class="row row-product-option-values">
    <div class="col-md-3 col-sm-3">
        <g:textField name="product.options[<index>].name" class="form-control"></g:textField>
    </div>

    <div class="col-md-8 col-sm-8">
        <g:textField name="product.options[<index>].values" class="form-control"></g:textField>
    </div>
    <div class="col-md-1 col-sm-1">
        <a class="btn btn-link" type="button">
            <i class="fa fa-remove"></i>
        </a>
    </div>
</div>

在我的taglib中,我使用該片段通過以下命令生成javascript html模板:

render(template: templatePath).replaceAll('\n', '').encodeAsJavaScript();

現在困難的部分:我需要替換為一個js變量,每次添加新的輸入行時,該變量都可以遞增,但是我不知道該怎么做。 在過程結束時,我需要一個類似於此的字符串

"<div class=\"form-group\"> <div class=\"row row-product-option-values\"> <div class=\"col-md-3 col-sm-3\"> <input type=\"text\" name=\"product.options[" + childCount +"].name\" class=\"form-control\" value=\"\" id=\"product.options[0].name\" /> </div> <div class=\"col-md-8 col-sm-8\"> <input type=\"text\" name=\"product.options[0].values\" class=\"form-control\" value=\"\" id=\"product.options["+ childCount +"].values\" /> </div> <div class=\"col-md-1 col-sm-1\"> <a class=\"btn btn-link\" type=\"button\"> <i class=\"fa fa-remove\"></i> </a> </div> </div></div>";

有人對如何完成此任務有想法嗎?

謝謝建議

路卡

  1. 使用AJAX:

每當您添加新行時,請使用所需輸入到控制器進行ajax調用,然后從該處渲染所需模板。 現在,使用結果更新/追加現有的父div。

  1. 使用JavaScript

在初始化期間,將html從模板存儲到javascript變量。 每當添加新行時,請將占位符索引替換為當前行號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM