2011-07-06 2 views
3

난 그냥 구글 폐쇄와 함께 몇 가지 일을 시작했는데, 나는 자신의 템플릿으로 선택 필드의 생성을 이동하고, 같은과 그 템플릿에 전화를하고 싶습니다 :클로저 템플릿에서 개체를 만들 수 있습니까?

{call templates.utils.select} 
    {param name: 'state'/} 
    {param value: $selected_state /} 
    {{param options: [ 
    {name: 'Australian Capital Territory', value: 'ACT'}, 
    {name: 'New South Wales', value: 'NSW'}, 
    {name: 'Northern Territory', value: 'NT'}, 
    {name: 'Queensland', value: 'QLD'}, 
    {name: 'South Australia', value: 'SA'}, 
    {name: 'Tasmania', value: 'TAS'}, 
    {name: 'Victoria', value: 'VIC'}, 
    {name: 'Western Australia', value: 'WA'} 
    ]/}} 
{/call} 

templates.utils.select 템플릿에는 올바른 옵션에 대해 selected 속성을 설정하는 논리가 있습니다. 불행히도 나는 '모든 코드가 Soy V2 구문에 없다 (발견 된 태그 {{매개 변수 : [{이름 : ...'예외}

전달 된 옵션 매개 변수를 사용할 수 있다고 가정한다. 호출 템플릿에,하지만 나는 매우 지루한 얻을 것이다, 템플릿에 가져 오는 모든 방법이 포함되어 있는지 확인해야합니다 것입니다.

을 내가

로 이동해야합니다 생각하는 순간
<select name="state"> 
    <option value="ACT" {if $selected_state=='ACT'}selected="selected"{/if}>Australian Capital Territory'</option> 
    <option value="NSW" {if $selected_state='NSW'}selected="selected"{/if}>New South Wales</option> 
    ... 
</select> 

또한 지루하지만 적어도 데이터는 단일 장소에 있습니다.

더 좋은 방법이 있습니까?

답변

4

Sept 19, 2011 release, Closure Templates provides support for list and map literals 현재. 불행히도 목록에있는 맵 리터럴과 버그 리터럴 인 partially fixed in plovr이 있지만, 곧 사용할 수있는 공식 픽스가 곧 제공 될 예정입니다.

+0

예, plovr 메일 링리스트에 언급 된 내용을 보니 매우 기뻤습니다. 다음 릴리스에서 손을 얻을 수 있기를 기대합니다. (9 월 버전의 plovr를 릴리스 한 후 며칠 기다렸다가 약간 성가 셨습니다. 이 새로운 반짝이는 케이크), 당신은 다음에 출시 될 때 어떤 생각을 가지고 있습니까? – Cebjyre

+0

Windows가 아닌 경우 http://code.google.com/p/plovr/downloads/detail?name=plovr-d6db24beeb7f.jar에서 리터럴을 지원하는 plovr을 얻을 수 있습니다. 그렇지 않으면 기다려야합니다. http://code.google.com/p/plovr/issues/detail?id=51이 수정 될 때까지 여러 사람들이 버그 패치를 제출 했으므로 가장 깨끗한 방법으로 통합해야하며 다시 확인해야합니다. – bolinfest

3

불행히도 Closure Templates는 문자 목록이나지도 값을 지원하지 않지만 plovr을 사용하여 문제를 해결할 수 있습니다 (아래 참조). Soy 템플릿 내에서 값을 구성하는 측면에서 Closure Templates 설명서의 Expressions 섹션에서 표현할 수있는 값으로 제한됩니다.

슬프게도지도와 목록 리터럴이 우선 순위 목록 according to the maintainer of Closure Templates, Kai Huang에서 충분히 높은 것처럼 들리지 않습니다.

비록 당신이 plovr 사용하는 당신은 org.plovr.soy.function.PlovrModule 기능 플러그인을 사용할 때 가능 사용자 정의를 통해 list() 기능 목록을 사용하게 soy-function-plugins 옵션을 활용 할 수 있습니다합니다. Javadoc for ListFunction은 클로저 템플릿에서 list() 함수를 사용하는 방법의 예를 보여줍니다.

plovr 외부에서 list() 함수 플러그인을 사용하려면 ListFunction.javafunction plugins as described in the Closure Templates documentation과 함께 사용해야합니다.

+0

건배, 예, plovr을 사용하고 있습니다. 두 개의 병렬 목록으로 필요한 것을 얻을 수 있었지만 객체가 포함 된 단일 목록을 만들 수 없었습니다. 제가 잘못했거나 현재 지원되지 않았습니까? – Cebjyre

+0

죄송 합니다만,'list()'는 다른 유효한 Closure Templates 표현식 만 사용할 수 있다고 생각합니다. 따라서 map/object를'list()'의 인수로 제공하려고하면 작동하지 않습니다. – bolinfest