阻止骨干将周围的div添加到视图中?

时间:2011-08-17 17:00:20

标签: javascript backbone.js

我使用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标签?谢谢!

3 个答案:

答案 0 :(得分:41)

发生了什么this.el是动态创建的,因为它从未由您明确设置。您有两种选择:

  1. 您应该使用tagNameclassName和/或id指定要创建的元素,然后让骨干为您创建。

  2. render中,您应该将this.el设置为您的手柄模板的内容。所以你会this.el = $(template(context))

  3. 文档有一个扩展的解释 - 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());