2014-06-24 3 views
1

내 자신의 종류의 템플릿 도우미를 개선하는 방법을 알고 싶습니다. 그리고 내가 원하는 모든 페이지에 autocomplete 구성 요소를 사용할 수 있습니다쉼표 나 순서없이 매개 변수를 Play 템플릿에 추가하려면 어떻게해야합니까?

@autocomplete("elementLabel","data-url-where-its-going-to-get-JSON-data","anyother","etc","foo") 

: 예를 들어, 나는 순서대로 매개 변수를받는 autocomplete.scala.html 동적으로 뭔가를했다.

하지만 Play의 inputText 도우미는 " '"+ parametername을 사용하여 매개 변수를 추가 한 다음 -> (아마도 람다?)와 같이 사용할 수있는 옵션이 있으므로 사용하기가 더 쉽습니다. 또 하나 개의 매개 변수를 추가 한 다음에 그것을 수정해야합니다 즉시 새로운 요구 사항 난을 나타나는

@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="[email protected]" 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

당신이'autocomplete' 템플릿 코드의 일부를 게시하고, 수 방법을 보여를 추가 매개 변수가이 매개 변수에 사용됩니까? –

+0

업데이트 됨, 친구. – user7197

답변

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="[email protected]" 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" 
) 
관련 문제