3

所以假设我从外部车把模板生成内容(通过 AJAX)

$.ajax({
    url: path,
    dataType: 'html',
    success: function(data) {
        source    = data;
        template  = Handlebars.compile(source);
        //execute the callback if passed
        if (callback) callback(template);
    }
});

现在在我的 template.handlebars 中,我输出了使用标签 {{this}} 等发送的数据。但我还包括了一些仅适用于模板底部的模板的 javascript(效果很好)。但是我需要访问一些发送到javascript内部模板的数据,这可能吗?

我知道一个非常愚蠢的例子不起作用,但应该解释我所追求的,以防它不清楚。所以这可能是我的 template.handlebars 文件的一个例子:

<h1>{{question}}</h1>

<script>
//want to access the data sent to template in the JS included
(function($) { //wrap to local scope
    $(document).ready(function() {
        //this doesn't work ofcourse.. but should explain what I'm after
        var question = {{question}};
        console.log(question)
    });
})(jQuery);

关于如何做到这一点的任何想法?对我来说,以这种方式包含仅适用于特定模板的 JS 感觉很干净。

4

1 回答 1

4

当您编译 Handlebars 模板时,它们只是通过替换来返回您的字符串{{expression}}

因此,您必须处理每种数据类型。对于这样的字符串使用。

var question = "{{question}}";

整数应该没有任何问题。它们可以像这样直接放置。

var question = {{question}};

我已经为对象工作过。您可以调用对象和数组的助手。

请参阅此stackoverflow 帖子以处理对象。

于 2013-10-08T13:04:43.227 回答