我使用Handlebars.js作为我的Backbone.js应用程序的模板工具。我的视图中的渲染功能通常如下所示:
var source = $("#round").html();
var template = Handlebars.compile(source);
var context = JSON.parse(JSON.stringify(this.model));
var html = template(context);
$(this.el).html(html);
return this;
以上代码通过以下代码附加到主应用程序视图中(这是调用上述代码的代码):
$('div#round-container', this.el).append(roundView.render().el);
我的Handlebars模板处理所有样式和布局,因此我将视图的“el”元素留空。 Backbone.js会自动在Handlebars模板周围添加周围的div标签。我认为这是因为“el”元素是空白的。有没有办法防止添加周围的div标签?谢谢!
答案 0 :(得分:41)
发生了什么this.el
是动态创建的,因为它从未由您明确设置。您有两种选择:
您应该使用tagName
,className
和/或id
指定要创建的元素,然后让骨干为您创建。
在render
中,您应该将this.el
设置为您的手柄模板的内容。所以你会this.el = $(template(context))
。
文档有一个扩展的解释 - http://documentcloud.github.com/backbone/#View-el
答案 1 :(得分:5)
另一种简单的方法是追加渲染元素的子节点而不是
$('div#round-container', this.el).append(roundView.render().el.childNodes);
答案 2 :(得分:3)
或者附加渲染元素的html,例如:
$('div#round-container', this.el).append(roundView.render().el.html());