2

我正在尝试在我的应用程序中实现 Handlebars 模板。我的问题是,我们可以加载和注册一个写在外部文件上的自定义车把助手吗?

以下代码工作正常,但帮助程序在页面内。

$.post(baseURL,
    {
        struser:UserName,
        password:Password,
        alias:"GetData",
        parameters:""
    },
    function(data,status){
        if(status="success"){

            Handlebars.registerHelper('MenuHelper', function() {
                if(this.NextLevel == 1){
                    return '<a href="' + this.url + '">' + this.text + '</a>';
                };
            });

            var vdata = JSON.parse(data);
            var template = Handlebars.templates['ListMenu.tmpl'];
            $("#listItem").html(template(vdata));
            $("#listItem").listview("refresh");
        }else{
            alert(connectionError);
        };
    });
};

我想将这段代码移动到一个单独的文件中,并在需要时将其注册到主文件中。

Handlebars.registerHelper('MenuHelper', function() {
    if(this.NextLevel == 1){
        return '<a href="' + this.url + '">' + this.text + '</a>';
    };
});

不知道如何完成这件事。尝试将其添加到模板文件中,但没有成功。你能帮我解决这个问题吗?

提前致谢

4

1 回答 1

0

我的热情被“mu is too short”先生的方向所激发,引导我找到这个解决方案:-D

我在一个单独的文件中创建了这个函数

function MenuHelper() {
    if(this.NextLevel == 1){
        return '<a href="' + this.url + '">' + this.text + '</a>';
    };
});

并使用这一行在主文件中注册了帮助程序

Handlebars.registerHelper("MenuHelper", MenuHelper);

这就是我的完整代码的样子。再次感谢“亩太短”先生

$.post(baseURL,
    {
        struser:UserName,
        password:Password,
        alias:"GetData",
        parameters:""
    },
    function(data,status){
        if(status="success"){
            Handlebars.registerHelper("MenuHelper", MenuHelper);
            var vdata = JSON.parse(data);
            var template = Handlebars.templates['ListMenu.tmpl'];
            $("#listItem").html(template(vdata));
            $("#listItem").listview("refresh");
        }else{
            alert(connectionError);
        };
    });
};
于 2013-09-01T07:26:01.707 回答