Wenn ich meine Lenkervorlage in HTML rendere, sieht es so aus, als ob sie im Wesentlichen den "Griffleisten" -Abschnitt ausfüllt. Ich drucke im Wesentlichen Nachrichten mit einem Titel und Inhalt, und ich verwende einen "! Jeder" Helfer, um alle meine Nachrichten anzuzeigen. Ich dachte ursprünglich, dass es daran lag, dass es dem HTML-Code entkam, also versuchte ich es mit einem dreifachen Griffbalken {{{an jedem Teil, aber die Verwendung jedes Helfers mit dem Triple-Stash gab mir einen Fehler. Benutze ich den Lenker möglicherweise falsch?Fehler beim Rendern von Lenkern zu HTML
das Typoskript ich verwenden, um die HTML und meinen Lenker Vorlage zu machen ist unten:
public static refreshData(data: any) {
$("#indexMain").html(Handlebars.templates['main.hbs'](data));
//helper function for upvote button
Handlebars.registerHelper('getUButton', function (id) {
id = Handlebars.escapeExpression(id);
return new Handlebars.SafeString(
"<button type='button' class='btn btn-default up-button' id='u" + id + "'>Upvote</button>"
);
});
//helper function for downvote button
Handlebars.registerHelper("getDButton", function (id) {
id = Handlebars.escapeExpression(id);
return new Handlebars.SafeString(
"<button type='button' class='btn btn-default down-button' id='d" + id + "'>DownVote</button>"
);
});
// Grab the template script
var theTemplateScript = $("#main-template").html();
// Compile the template
var theTemplate = Handlebars.compile(theTemplateScript);
//get messages from server and add them to the context
// This is the default context, which is passed to the template
var context = {
messages: data
}
console.log("context:")
console.log(context);
// Pass data to the template
var theCompiledHtml = theTemplate(context);
console.log(theCompiledHtml);
// Add the compiled html to the page
$("#messages-placeholder").html(theTemplate(context));
//add all click handlers
//get all buttons with id starting with u and set the click listerer
$(".up-button").click((event) => {
var id = $(event.target).attr("id").substring(1);
main.upvote(id)
});
//get all buttons with id starting with d and set the click listerer
$(".down-button").click((event) => {
var id = $(event.target).attr("id").substring(1);
main.downvote(id)
});
}
<script id="main-template" type="text/x-handlebars-template">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Current Messages</h3>
</div>
<div class="panel-body">
<div class="list-group" id="message-list">
<!-- for each message, create a post for it with title, content, upvote count, and upvote button -->
{{#each messages}}
<li class="list-group-item">
<span class="badge">Vote Count: {{likeCount}}</span>
<h4 class="list-group-item-heading">{{title}}</h4>
<p class="list-group-item-text">{{content}}</p>
<div class="btn-group btn-group-xs" role="group" aria-label="upvote">
{{getUButton id}}
</div>
<div class="btn-group btn-group-xs" role="group" aria-label="downvote">
{{getDButton id}}
</div>
</li>
{{/each}}
</div>
</div>
</div>
</script>
<div id="messages-placeholder"></div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Post New Message</h3>
</div>
<div class="input-group">
<span class="input-group-addon">Title</span>
<input id="newTitle" type="text" class="form-control" placeholder="Title" aria-describedby="newTitle">
</div>
<div class="input-group">
<span class="input-group-addon">Message</span>
<input id="newMessage" type="text" class="form-control" placeholder="Message" aria-describedby="newMessage">
</div>
<div class="btn-group" role="group" aria-label="create">
<button type="button" class="btn btn-default" id="postNewMessage">Post Message</button>
</div>
<span class="label label-danger" id="incompleteAcc"></span>
</div>
So Entschuldigung, sollte mehr von meinem Code enthalten Ich habe versucht, es einfacher zu lesen, aber ich habe meinen obigen Kommentar, um die gesamte Lenker-Vorlage enthalten, und ich habe tatsächlich die Skript-Tags enthalten, und ich habe die ganze Methode, in der ich diese Vorlage benutzt habe und sie in HTML umgewandelt habe. – csed0126
Überarbeitete meine Antwort im Lichte Ihrer zusätzlichen Klarstellung. – rasmeister