我在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()
,我以为我是从一个类创建一个实例(我想我正在获得一个Object的克隆?)。是否有其他方法通过修改<body>
中的代码而不是包含的javascript来使代码工作?
答案 0 :(得分:0)
如果你想在头脑中工作,但是在DOM准备就绪之后(显然,因为你正在使用jQuery)只需通过以下方式在DOMReady事件中设置你的视图:
$(document).ready(function(){
...
//set up view here
...
});
答案 1 :(得分:0)
您的问题是由于在视图中使用jQuery选择器作为el
的值而导致的。
阅读本文: