0

我在我的 Backbone.js 应用程序中使用 Handlebars。我想知道如何让 Handlebars 模板返回 DOM 元素而不是字符串?

这就是我的意思:

define([
    'underscore',
    'backbone',
    'handlebars',
    'text!templates/myTemplate.hbs'
], function(_, Backbone, handlebars, template) {
   ...
   ...
   render: function() {
       // This returns me a string of HTML, I would like to be able
       // to get actual DOM elements so that I can use appendChild
       // and insertBefore etc.
       var hbTemplate = Handlebars.compile(template);
       var templateString = hbTemplate(/* some json data */);
   },
   ...
   ...

我曾尝试使用 DOMParser 将 HTML 字符串解析为 DOM 元素,但由于 Handlebars 模板中有很多额外的空格,会出现语法错误。但是,如果 Handlebars 能够以某种方式返回 DOM 元素而不是我自己解析它们,那就太好了。

4

1 回答 1

3

您可以将输出传递给 jQuery(如果这是一个选项),据我所知,它会解析车把模板。不知道 jQuery 是否是一个选项,但类似于:

var hbTemplate = Handlebars.compile(template);
var templateJqueryDom = $(hbTemplate(/* some json data */))
于 2013-04-07T18:32:40.397 回答