2012-02-16 66 views
0

我在我的Rails 3.2項目中使用「rails-backbone」gem。通過這種設計,我的Backbone Views被加載到<head>標籤中。使用路線時一切正常,但如果我嘗試直接在沒有路線的情況下使用它們,則視圖不會呈現。如果我將<body>中的視圖代碼都按預期工作。在頭部定義的骨幹視圖不工作,除非使用路徑

<head>中定義視圖是否有效?

更新: 在<body>: 在JavaScript

<script type="text/javascript"> 
    var lv = new ListView(); 
</script> 

列入<head>文件:

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代碼工作?

如果你想要的東西在頭上的工作,但

回答

0

後DOM準備好,(顯然因爲你使用jQuery)剛剛通過設立在domready中事件的看法:

$(document).ready(function(){ 
    ... 
    //set up view here 
    ... 
}); 
+0

這,或更好,但不叫'render'在初始化語句,延遲調用* *是直到DOM已準備就緒。 – JayC 2012-02-17 17:24:28