2017-10-19 3 views
0

Ich beginne gerade mit lenkernjs und erfuhr über Lenker-Helfer: https://github.com/helpers/handlebars-helpersWie kann ich Lenker-Helfer im Browser mit normalen Lenkern verwenden?

Aber ich bin nicht sicher, wie man das in einem Browser funktioniert. Die Beispiele scheinen für eine Schluckakte zu sein. Ich bemerke auch, dass es einen Bereich hat, um es im Browser zu funktionieren: , und gehe zur Arbeitsdemo Ich sehe die generierte js, über die ich rede: https://doowb.com/handlebars-helpers-browserify-example/app.js Also habe ich versucht, das nur zu meinen js Referenzen nach Lenker hinzuzufügen:

<script src="~/lib/handlebars/handlebars.js"></script> 
<script src="https://doowb.com/handlebars-helpers-browserify-example/app.js"></script> 

Aber in meiner Vorlage, wenn ich versuche und Referenz hinzufügen {{add @index + 1}}. Ich bekomme einen Fehler in der Konsole. Und hier ist mein Template-Code:

 var source = $("#questions-template").html(); 
     var template = Handlebars.compile(source); 

     var questionData = JSON.parse('{ "questions":data }'); 
     var html = template(questionData); 
     $("#questions-template-output").html(html); 

ich ziemlich neu bin schlingen und andere Pre/Post-Processing Sachen. Ich habe das Gefühl, dass mir etwas offensichtlich fehlt. Was muss ich tun, damit dies funktioniert?

+0

Ich will deine Frage nicht ignorieren und klingen, als wäre ich schlauer als du. Ich hatte ein ähnliches Problem und ein Kollege schlug vor, [Vorlagenliterale] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) zu verwenden, und das war viel besser als die Verwendung Schablonen von Drittanbietern. Vielleicht wird es für Ihr Projekt funktionieren? –

+0

Funktioniert das für LenkerJS? Ich sehe keine Erwähnung in der Lage zu tun, was Sie in der Dokumentation verlinkt haben: http://handlebarsjs.com/#literals. Können Sie ein Beispiel dafür geben, wie Sie das verwenden würden, um den Index + 1 innerhalb einer Schleife innerhalb einer Vorlage anzuzeigen? – SventoryMang

+0

Was ich vorschlagen möchte, ist ein Paradigmenwechsel für Ihr Projekt, komplett weg vom Lenker und hin zu Vanille JS mit HTML. Google 'Vorlage Literale vs Lenker' und lesen, wenn Sie interessiert sind. Ich muss laufen, werde aber später wiederkommen und mehr Informationen geben, wenn jemand anderes es noch nicht getan hat. –

Antwort

0

Hier ist ein Beispiel für das, was ich vorschlage. Führen Sie dies in der Chrome-Konsole oder in jsfiddle aus.

let element = document.createElement('div') 
let randomArray = ['help', 'chocolate', 'eagle']; 
let name = window.prompt("What's your name?", "World"); 
// remove the .join() below and see what happens :) 
element.innerHTML = ` 
    <h1>Hi, ${name}! This element is looping</h1> 
    ${randomArray.map((item, i) => ` 
    <div>I am ${item}, item number ${i}</div> 
    `).join('')} 
` 
document.body.append(element); 

Sie werden vielleicht nicht Ihr Projekt an diesem Punkt zu ändern, aber es ist wahrscheinlich eine gute Idee, um wenigstens langsam von Lenker zu JavaScript Template-Literale zu bewegen. Lenker hat viele Einschränkungen, in die Sie weitergeraten werden, und Sie müssen sich mit Helfern herumschlagen, die Sie bereits gesehen haben, sind nicht einfach. Dieser Code ist jedoch alles JS und HTML, die Sie bereits kennen.

Für weitere Informationen gibt es Wes Bos' blog, die MDN und this random gist.

+0

Ich denke nicht, dass dies aufgrund der Browser-Unterstützung eine gute Idee ist: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals. IE unterstützt sie überhaupt nicht und die meisten Browser unterstützen auch keine Escape-Sequenzen in ihnen. – SventoryMang

+0

@SventoryMang Ich stimme dir zu, ich habe versucht, klar zu sein, dass dies nicht 100% tun und nie an etwas anderes denken, aber es hängt davon ab, welche Art von Browser-Unterstützung Sie benötigen. Wie auch immer, ich denke, es wird immer üblicher werden, während Template-Engines wie jQuery verblassen (dh nicht vollständig, aber es wird einen Schritt weg von ihr geben), daher ist es hilfreich, sich damit vertraut zu machen. –

Verwandte Themen