[英]Does handlebars.js support promises?
我的模型的某些屬性應該異步加載(由承諾實現)。 我不想等待 - 我想立即渲染它並在承諾解決時部分更新它。 handlebars.js 支持嗎?
把手不支持異步。 這使得無法將 Promise 用於表達式和助手。 您可以使用await
但這會暫停執行,因此在 Promise 解決之前不會進行渲染。 其他模板框架(如dust.js)提供異步功能。
我想我可以提出一種解決方法來使異步(或承諾)(似乎)起作用。 下面是示例。 基本上這就是我正在做的
unique Id
的 div(我在這里使用命名空間 + 自動增量)unique id
訪問它,用新數據替換 step1 中 div 的 innerHTML 下面的代碼。 觀察三重括號 ( {{{ }}}
)。 這是為了確保生成的 HTML 不會被轉義
<script id="handlebars-demo" type="text/x-handlebars-template">
<div>
-->> {{{functionName "functionParam" }}} <<--
</div>
</script>
<div id="output" />
<script>
window.id=0;
Handlebars.registerHelper('functionName', function(funcParam ){
let tempId = "my_namespace_" + window.id++;
$.post("https://something.com/abc").done(function(data){
$("#"+tempId ).html(data.something);
}
)
return '<div id='+tempId+'>loading</div>'
});
var template = document.getElementById("handlebars-demo").innerHTML;
var templateScript = Handlebars.compile(template);
var context = { };
var html = templateScript(context);
document.getElementById("output").innerHTML= html;
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.