2015-08-26 42 views
0

我試圖在我的應用程序上處理一對多的表單映射。Grails使用gsp片段作爲javascript函數的html模板

根據this post我創建了類似的代碼:但是,我不想把我的HTML內部JavaScript和我想做的東西可重用,所以我創建了一個小的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> 

我的標籤庫中我使用的是片段的產生與此命令的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>"; 

有人有一個想法如何完成此任務?

感謝諮詢

盧卡

回答

0
  1. 使用AJAX:

只要添加一個新行,讓你的期望輸入一個AJAX調用控制器和渲染所需的模板。 現在更新/附加您的現有父div與結果。

  • 使用JavaScript
  • 在初始化期間從存儲模板的HTML到一個JavaScript變量。當您添加新行時,請將佔位符索引替換爲當前行號。

    +0

    是的,當然使用javascript字符串替換它是一種方式,但是如果有更好的方法可以做到這一點會更好 –

    相關問題