我想知道如何使用同步数据和 Handlebars 助手。我想将 cms 消息加载到单页应用程序,我尝试了以下方法但无法实现。
请看下面的代码。
function loadCmsMessage(key) {
var cms = {
"msg.001": "Hello {0} {1}"
};
var deferred = $.Deferred();
setTimeout(function () {
var msg = cms[key];
deferred.resolve(msg);
}, 1000);
return deferred.promise();
}
Handlebars.registerHelper('cms', function (key, arr) {
var promise = loadCmsMessage(key);
promise.done(function (str) {
str = Handlebars.Utils.escapeExpression(str);
if ($.isArray(arr)) {
$.each(arr, function (i) {
var safeStr = Handlebars.Utils.escapeExpression(arr[i]);
str = str.replace("{" + i + "}", safeStr);
});
}
var result = '<span class="cms-data">' + str + '</span>';
return new Handlebars.SafeString(result);
});
});
$(document).ready(function () {
var template = Handlebars.compile($("#myTemplate").html());
$("#wrap").html(template({
"person": ['Jane', 'Fonda']
}));
});
最佳答案
你不能。 return
语句位于 Promise 的内部函数中。 Handlebars 助手不允许异步。
关于javascript - 具有异步数据的 handlebar.js 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20716240/