2016-07-05 11 views
0

Gibt es eine Möglichkeit, die HTML-Codierung global innerhalb von dust.js zu deaktivieren? Ich vertraue meinen Daten genug, um es während des Renderns auszuschalten. Anstatt jedem Tag in jeder Vorlagendatei "| s" hinzufügen zu müssen, wäre es ideal, sie global festlegen zu können.dust.js HTML-Codierung global deaktivieren

Wenn nicht, gibt es eine Möglichkeit, Filter mit benutzerdefinierten Helfern zu verwenden? Ich habe einen @val-Helfer erstellt, kann aber den Filter "| s" nicht anwenden. Nach der Dokumentation sollte folgende Arbeiten:

{@val filters="|s" /}

Aber es allein nicht funktioniert, so dass ich denke einige Logik innerhalb der Helfer selbst platziert werden muss.

+0

Sie haben noch keine Lösung für die zweite Frage gefunden, aber zum ersten Mal konnte ich das automatische Escaping entfernen, indem ich den Filter "| h" so ändere, dass er nicht verschwindet: dust.filters.h = function (value) {return value; }; Ich habe auch einen neuen Filter hinzugefügt, um es zu ersetzen: dust.filters.esc = Funktion (Wert) {zurück staub.escapeHtml (Wert); }; –

Antwort

0

Sie können das wenig dokumentierte Pragma esc verwenden, um einen globalen Kontext auf einen Vorlagenblock anzuwenden.

{ 
    "hello": "Hello & World" 
} 

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

Für Ihre zweite Frage hängt es davon ab, was Ihr Helfer tut. Wenn Ihr Helfer eine Art Chunk zurückgibt, zum Beispiel über Chunk.render, müssen Sie Filter manuell anwenden. Wenn Ihr Helfer einen Wert zurückgibt, wird dieser Wert durch alle vorhandenen filters übergeben. Hier sind ein paar Beispiele: Sagen Sie, Sie haben einen Helfer {@val}, der einfach alles zurückgibt, das als value übergeben wird.

Wert von Ihrem Helfer Rückholmittel filters respektiert wird:

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 

ein Stück von Ihrem Helfer Rückkehr ignoriert filters:

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

{@val value="Hello & World" /} <-- Hello & World