我想知道如何改进我自己的模板助手。例如,我创建了一个autocomplete.scala.html
接收参数以便动态化,例如:
@autocomplete("elementLabel","data-url-where-its-going-to-get-JSON-data","anyother","etc","foo")
然后我可以在我想要的任何页面中使用autocomplete
组件。
但我想知道如何让它更容易使用,例如,Play的inputText
助手可以选择使用" ' " + parametername然后 - > (可能是lambda?)所以,我怎么能实现它,所以,我可以,例如做出类似的东西:
@autocomplete("data-url",'someattribute->"value", '_anotherOneWithUnderscoreWhyBtw->"whyunderscore")
autocomplete.scala.html
@**
* Componente para pesquisa textual e sele��o de registro de relacionamento 1 para N
*
* Example:
*
* @autocomplete("example.nested.id", "Unidade", "/sistema/buscarExemplo", myForm.get().getUnidade.getId.toString, myForm.get().getUnidade.getLabel.toString)
*@
@(fieldId: String, fieldTitle: String, dataUrl: String, initIdValue: String, initTitleValue: String)
<div class="form-group">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<label for="@fieldId" class="control-label">@fieldTitle</label>
</div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<span class="input-icon input-icon-right" style="width:100%">
<input type="text" class="autocomplete-relation"
name="@fieldId"
data-url="@dataUrl"
data-id-status="@fieldTitle"
data-init-id-value="@initIdValue"
data-init-nome-value="@initTitleValue"
style="width:100%"
/>
<i id="response_@fieldTitle" class="icon-search blue"></i>
</span>
</div>
</div>
一旦出现新要求,我必须再添加一个参数,然后在我称之为的所有页面上修改它。我想在播放时使用该原始复选框,例如:
@checkbox(myForm("myField"),'_label ->"MY_LABEL", 'class->"MYCLASS")
OR
@checkbox(myForm("myField"),'class ->"MYCLASS",'_label->"MY_LABEL")
or even
@checkbox(myForm("myField"),'class ->"MYCLASS",'_label->"MY_LABEL",'anotheattribute->"VALUE")
等等。我怎么能这样做,所以我不必填写所有这些,订单也不重要?
答案 0 :(得分:0)
您可以使用重复的(String, String)
元组作为最后一个参数:
@(fieldId: String, fieldTitle: String, data: (String, String) *)
<div class="form-group">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<label for="@fieldId" class="control-label">@fieldTitle</label>
</div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<span class="input-icon input-icon-right" style="width:100%">
<input type="text" class="autocomplete-relation"
name="@fieldId"
data-id-status="@fieldTitle"
@data.map{ case (key, value) =>
@{key}="@{value}"
}
style="width:100%"
/>
<i id="response_@fieldTitle" class="icon-search blue"></i>
</span>
</div>
</div>
你会按照你想要的方式来称呼它:
@autocomplete("someId", "someTitle", "data-url" -> "google.com", "data-attr" -> "someValue")
您还可以使用Map[String, String]
。
@(fieldId: String, fieldTitle: String, data: Map[String, String])
模板的其余部分将保持不变,但你会传递这样的内容:
Map[String, String](
"data-url" -> "google.com",
"data-field-something" -> "value"
)