2013-06-28 3 views
2

방금 ​​soyfiles에서 사이트 출력을 구축하기 위해 java에서 google-closure를 사용하는 팀에 가입했습니다. 이것은 HTML에서는 잘 작동하지만 자바 스크립트에서는 꽤 못 생깁니다. 현재 접근법은 자바 스크립트를 {literal}으로 묶는 것입니다. 즉, 우리는 아무런 이점도 얻지 못합니다. 우리가하고있는 일의 예는 다음과 같습니다closure soy 파일에서 javascript를 올바르게 사용하는 방법은 무엇입니까?

{namespace forms autoescape="contextual"} 
{template myForm} 
//.... stuff happens 

{call js.myFormJs data="$someParam" /} 

JS : 우리는 또한 스크립트의 전체 부분이 발생하는 경우 결정하기 위해 {if} 블록 일부 지역 간장 PARAMS에 사용

{namespace forms autoescape="contextual"} 
/** 
* @param foo 
*/ 
{template myForm} 
<script type="text/javascript"> 
{literal} 

//js stuff happens 

var myVariable {/literal}{$foo}{literal}; 

//js stuff happens 

{/literal} 
</script> 
{/template} 

. 위에서 볼 수 있듯이, 이러한 js soy 파일은 거의 모든 html 파일과 함께 다른 siy 파일의 일부로 거의 항상 호출됩니다.

제 질문은 무엇을해야합니까? |escapeJs 플래그를 보았지만 적용 할 위치를 찾을 수 없습니다. {literal}을 없애면 모든 자바 스크립트 중괄호 오류가 렌더링됩니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? js에 대해 soy 파일을 사용해야합니까? (나는 의심해야합니다.)

답변

2

여기 몇 가지 접근법이 있습니다. 가장 좋은 방법은 템플릿 외부에서 자바 스크립트를 생성하는 것입니다. 중괄호를 {lb} 및 {rb} '로 바꿀 수도 있지만 코드가 읽히지 않을 정도로 가깝습니다.

관련 문제