2016-07-05 4 views
0

dust.js에서 HTML 인코딩을 전역 적으로 끌 수있는 방법이 있습니까? 렌더링하는 동안 데이터를 끄기에 충분한 데이터를 신뢰합니다. 모든 템플릿 파일의 모든 태그에 "| s"를 추가하는 대신 전역 적으로 설정할 수있는 것이 이상적입니다.dust.js 전 세계적으로 HTML 인코딩을 사용하지 않음

그렇지 않은 경우 맞춤 헬퍼를 사용하여 필터링하는 방법이 있습니까? @val 도우미를 만들었지 만 "| s"필터를 적용 할 방법이 없습니다.

{@val filters="|s" /}

을하지만 자체에서 작동하지 않습니다, 그래서 몇 가지 논리를 생각하면 헬퍼 자체 내에 배치 될 필요 해요 : 워드 프로세서에 따르면, 다음과 같은 작업을해야합니다.

+0

아직도 두 번째 질문에 대한 해결책을 발견하지 않았습니다 만, 첫 번째로, 나는 탈출하지 않기 위해 "| h"필터를 업데이트함으로써 자동 탈출을 세계적으로 제거 할 수 있었다 : dust.filters.h = function (value) {반환 값; }; 새 필터를 추가하여 교체했습니다. dust.filters.esc = function (return) {return dust.escapeHtml (value); }; –

답변

0

약식 escpragma를 사용하여 전역 컨텍스트를 템플릿 블록에 적용 할 수 있습니다. 두 번째 질문에 대한


{ 
    "hello": "Hello & World" 
} 

{%esc:s} 
    This applies |s to everything inside the pragma 
    {hello} <-- will not escape the ampersand 
{/esc} 

, 그것은 당신의 도우미가 무엇을하고 있는지에 따라 달라집니다. 예를 들어 도우미가 청크 종류를 반환하는 경우 (예 : Chunk.render) 필터를 수동으로 적용해야합니다. 도우미가 값을 반환하면 해당 값은 filters을 통해 전달됩니다. 다음은 몇 가지 예입니다. 도우가 {@val}이고 전달 된 결과를 단순히 value으로 반환한다고 가정 해 보겠습니다. 도우미에서 덩어리를 반환

dust.helpers.val = function(chunk, context, bodies, params) { 
    return params.value; 
}; 

{@val value="Hello & World" /} <-- Hello &amp; World 
{@val value="Hello & World" filters="s" /} <-- Hello & World 

filters 무시 :

존경 도우미에서 값을 filters을 의미 반환

dust.helpers.val = function(chunk, context, bodies, params) { 
    return chunk.write(params.value); 
}; 

{@val value="Hello & World" /} <-- Hello & World 
관련 문제