2012-04-13 50 views
6

我想动态地在Backbone js应用程序中创建一些视图元素。当初始化一个新视图时,我希望它将新元素插入到DOM中,将view中的元素引用存储在view.el中,并像往常一样委托事件。如何动态创建Backbone视图元素?

我明白我可以放入我的html,然后用el设置一个视图:“#test”,但这对于模式和其他视图不是中心的web应用程序似乎是矫枉过正。有没有规定的方式来做到这一点我在文档中缺少?我只是误解了观点应该如何工作?

回答

8

骨干视图会为您生成el,无需您执行任何操作。默认情况下,它会创建一个<div>。不过,您可以生成任何标签名称。将视图实例化后,在视图上实现render方法,并使用HTML填充el


MyView = Backbone.View.extend({}); 

var v = new MyView(); 
console.log(v.el); // => "<div></div>" 


// define your own tag, and render contents for it 

MyTagView = Backbone.View.extend({ 
    tagName: "ul", 

    render: function(){ 
    this.$el.html("<li>test</li>"); 
    } 
}); 

var v2 = new MyTagView(); 
v2.render(); 
console.log(v2.el); // => "<ul><li>test</li></ul>" 

这是常见的做法是使用模板系统,使您的视图的HTML,像Underscore.js模板,车把,或任何其他十几个或多个模板的JavaScript模板引擎。

一旦你从视图中生成了内容,就需要将它粘贴到DOM的某个位置,然后才能看到它。通常通过jQuery或其他插件完成:

$("#some-element").html(v2.el);