我在我的Rails 3.2项目中使用了“rails-backbone”gem。通过这种设计,我的Backbone视图被加载到<head>
标签中。当使用Routes时,一切都很好,但是如果我试图直接使用视图而不使用Routes,视图就不会呈现。如果我把视图代码放在<body>
中,一切都能按预期工作。
当在<head>
中定义视图时,是否有方法使视图工作?
更新:在<body>
中:
<script type="text/javascript">
var lv = new ListView();
</script>
在<head>
中包含javascript文件中:
window.ListView = Backbone.View.extend({
el: $("#node"), // This does not work
initialize: function(){
_.bindAll(this, 'render');
this.el = $("#node"); // Works if I add this line
this.render();
},
render: function(){
$(this.el).append("<ul> <li>hello world</li> </ul>");
}
});
据我所知,#node还不存在,这就是为什么它没有绑定到el
的原因。我不太明白这里什么时候发生的:var lv = new ListView()
,我以为我是从一个类创建一个示例(我猜我得到了一个对象的克隆?)。是否有其他方法可以通过修改<body>
中的代码而不是包含的javascript来使代码工作?
2条答案
按热度按时间ccrfmcuu1#
您的问题是由于在视图中使用jQuery选择器作为
el
的值而引起的。请阅读:
http://lostechies.com/derickbailey/2011/11/09/backbone-js-object-literals-views-events-jquery-and-el/
ijxebb2r2#
如果您想让某些东西在头中工作,但在DOM准备好之后,(显然因为您使用的是jQuery)只需通过以下方式在DOMReady事件中设置视图: