2016-03-28 6 views
2

Gibt es eine Möglichkeit, Lenker Vorlagen zu laden, einfacher? Es scheint so einfach zu sein. Wenn ich den folgenden Code für index.html haben:abstrahieren Lenker Vorlagen in externe Dateien ohne AJAX

<body> 
    <h1>From the index.html</h1> 
    <div id="hbs"></div> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.min.js"></script> 
    <script id="test" type="text/x-handlebars-template"> 
     <h2>This is from HBS</h2> 
     <p> 
     hbs generated this p tag! 
     </p> 
    </script> 
    <script src="js/script.js"></script> 
</body> 

Hier ist der Code für das Skript die Vorlage in js/script.js zu kompilieren:

var template = Handlebars.compile(document.querySelector("#test").innerHTML) 
document.querySelector("#hbs").innerHTML = template({}) 

Dies funktioniert gut, aber wenn ich die index.html öffnen kann ich das sehen Header und p Tag durch die Vorlage generiert. Es muss eine einfache Möglichkeit geben, diese Vorlage in eine separate Datei zu übertragen!

Antwort

3

Sie Ihre Vorlage in einer hbs-Datei setzen können:

template.hbs:

<script type="text/x-handlebars-template"> 
     <h2>This is from HBS</h2> 
     <p> 
     hbs generated this p tag! 
     </p> 
</script> 

Und dann Ajax verwenden, um Ihre Datei anstelle eines querySelector zu bekommen html

$document.ready(function(){ 
    $.get('/url/template.hbs', function(source) { 
     var template = Handlebars.compile(source); 
     document.querySelector("#hbs").innerHTML = template({}); 
    } 
}); 
zu bekommen
+0

richtig, danke ich war auf diese Weise vertraut. War der Meinung, es sollte einfach sein, keinen Ajax nutzen zu müssen. Aber ich konnte es nicht finden. Vielen Dank! –

+0

Könnten Sie bitte die Frage akzeptieren, dass es für Sie in Ordnung ist. Danke –

+0

es ist keine genaue Antwort auf die Frage, ich fragte, es ist eine Lösung, aber nicht eine Frage gestellt. Sagt ohne AJAX –

Verwandte Themen