是否可以通过模板内的JS访问发送到把手的数据?

时间:2013-10-08 12:01:27

标签: javascript jquery handlebars.js

我们假设我从外部手柄模板(通过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感觉很干净。

1 个答案:

答案 0 :(得分:3)

编译Handlebars模板时,只需替换{{expression}}即可返回字符串。

所以你必须处理每种数据类型。对于像这样的字符串使用。

var question = "{{question}}";

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

var question = {{question}};

我已经为对象工作了。您可以为对象和数组调用帮助程序。

引用此stackoverflow post来处理对象。