把手帮助器输出未显示在模板中

ped*_*ete 1 handlebars.js

我有一个把手辅助方法,它通过ajax获取一个json对象,然后我想将json格式化为html并将其注入模板.

我将html和输出构建到控制台,并正确查看输出,但是
把手助手的结果永远不会显示在模板中.

Handlebars.registerHelper("accounts_dropdown", function() {
    function get_dropdown(callback){
    var dropdown='Select Account';

    $.ajax({
        url: 'accounts',
        success: function(response){
            for(var i=0;i<response.length;i++){
            dropdown+=' < option value="'+response[i].id+'">'+response[i].name+'</option>';
                }

            callback(dropdown);
            }
        });
    }

    get_dropdown(function(dropdown){
        console.log(dropdown);
        return new Handlebars.SafeString(dropdown);
    });
  });

在我的模板中我有


 {{accounts_dropdown}}

Jak*_*sel 5

这不起作用,因为您正在异步加载下拉列表.你的帮助函数需要为Handlebars返回一个值以插入到模板中,但你的助手实际上并没有返回任何东西.一种选择是同步加载它,如下所示:

Handlebars.registerHelper("accounts_dropdown", function() {
function get_dropdown(){
 var dropdown='Select Account';

 $.ajax({
    url: 'accounts',
    async: false,
    success: function(response){
        for(var i=0;i<response.length;i++){
        dropdown+=' < option value="'+response[i].id+'">'+response[i].name+'</option>';
            }
        }
    });

 return dropdown;
}

return new Handlebars.SafeString(get_dropdown());
});
Run Code Online (Sandbox Code Playgroud)