2013-04-07 24 views
0

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

这就是我的意思是:

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可以以某种方式返回DOM元素,而不是我自己解析它,那将会很好。

+0

什么样的dom解析器不能处理空间? – VeXii 2013-04-07 18:20:59

+0

我试过使用这个https://developer.mozilla.org/en-US/docs/DOM/DOMParser,但它给我带来了很多关于额外空间的错误。 – 2013-04-07 18:21:40

+0

当即时通讯使用该网页的源html。 domparser也失败了。 – VeXii 2013-04-07 18:29:12

回答

3

你可以通过管道输出到jQuery(如果这是一个选项)来解析句柄模板,据我所知。 不知道如果jQuery是一个选项,但类似:

var hbTemplate = Handlebars.compile(template); 
var templateJqueryDom = $(hbTemplate(/* some json data */)) 
相关问题