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

egi*_*dra 27 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;
Run Code Online (Sandbox Code Playgroud)

以上代码通过以下代码附加到主应用程序视图(这是调用上述代码的代码):

$('div#round-container', this.el).append(roundView.render().el);
Run Code Online (Sandbox Code Playgroud)

我的Handlebars模板处理所有样式和布局,因此我将视图的"el"元素留空.Backbone.js会自动在Handlebars模板周围添加周围的div标签.我认为这是因为"el"元素是空白的.有没有办法防止添加周围的div标签?谢谢!

Cag*_*ged 41

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

  1. 您应该指定要创建的元素tagName,className和/或id让骨干为您创建.

  2. render你应该设置this.el你的车把模板的内容.所以你会的this.el = $(template(context)).

文档有一个扩展的解释 - http://documentcloud.github.com/backbone/#View-el

  • setElement也是一个不错的选择 (5认同)

小智 5

另一种简单的方法是追加渲染元素的子节点

$('div#round-container', this.el).append(roundView.render().el.childNodes);
Run Code Online (Sandbox Code Playgroud)