簡體   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