1
背景ストーリー:私はjsファイル構造になっていて、ハンドルバーテンプレートを取得してそれを(ハンドルバーのスタイルガイドツール、ファブリケーターによって使用される)ヘルパを構築しています。jsファイル構造体、戻り値?
私のreturnTemplate()
関数は未定義を返し、私はその理由を理解できませんか? それはrenderTemplate()
に入りますが、そのことは行いますが、戻り値はボタンクリックまですべて移動しません。
var Button = (function() {
function init() {
$('.js-template-trigger').on('click', function() {
var context = {
name: 'John Wick'
}
var value = TemplateHelper.returnTemplate('demo-template', context);
console.log('value:', value);
});
}
return {
init: init
};
})();
$(function() {
Button.init();
});
var TemplateHelper = (function() {
function getTemplate(templateId, callBack, context) {
//$.get('/data/templates.html#' + templateId).done(callBack);
console.log('what is:', $('#demo-template')[0].outerHTML);
callBack($('#demo-template')[0].outerHTML);
}
function renderTemplate(source, context) {
console.log('renderTemplate');
var template = Handlebars.compile(source);
var html = template(context);
console.log('renderTemplate html:', html);
console.log('renderTemplate html inner:', $(html).html());
return $(html).html();
}
function returnTemplate(templateId, context) {
var callBack = function(data) {
renderTemplate(data, context);
}
return getTemplate(templateId, callBack, context);
}
function appendToTemplate(templateId, context, targetAppend) {
var callBack = function(data) {
if (data !== undefined) {
var html = renderTemplate(source, context);
$(html).appendTo($(targetAppend));
}
}
getTemplate(templateId, callBack, context);
}
return {
returnTemplate: returnTemplate
};
})();
HTML
<button type="button" class="js-template-trigger">click me</button>
<script id="demo-template" type="text/x-handlebars-template">
<div style="height: 50px; width: 100%; background-color: deepskyblue;">{{name}}</div>
</script>
驚くばかりです。私はそれを試みたが、コールバックの定義に追加することができなかった。ありがとう。 –
しかし、私が '$ .get();'を返すと、私は値を取得するのではなく、関数全体を取得するだけで、どのように値を抽出するのですか? –
'$ .get()'は非同期なので、値を即座に取得することはできません(また、戻り値は、あなたが発見した関数です)。私はあなたが望むことができる約束を見なければならないと思う:ちょうどここに行くhttps://davidwalsh.name/promises – BNilsou