繁体   English   中英

handlebar.js与异步数据的助手

[英]handlebar.js helpers with asynchronous data

我想知道如何使用同步数据和车把助手。 我想将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的内部函数。 把手助手不允许异步。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM