2011-12-17 127 views
1

我看到this關於在骨幹中的簡單視圖的小文章。但我嘗試加載在這樣一個模板,我自己.. does not工作:(骨幹視圖不渲染我的模板

我複製並粘貼代碼到我的文件,但沒有發生的一切都在這裏是我的代碼:

<!DOCTYPE html> 
    <head> 
    <meta charset="utf-8"> 

    <script type="text/javascript" src="js/vendor/jquery-1.7.1.js"></script> 
    <script src="js/vendor/underscore.js"></script> 
    <script src="js/vendor/backbone.js"></script> 

    </head> 
    <body> 
    <div id="search_container"></div> 

    <script type="text/javascript"> 
    ;(function(){ 
     SearchView = Backbone.View.extend({ 
     initialize: function(){ 
     _.bindAll(this, 'render'); 
     }, 
     render: function(){ 

     var template = _.template($("#search_template").html(), {}); 
     $(this.el).html(this.template); 
     this.el.html(template); 
     } 
    }); 

    var search_view = new SearchView({ el: $("#search_container") }); 
    })(jQuery); 
    </script> 

    <script type="text/template" id="search_template"> 
    <label>Search</label> 
    <input type="text" id="search_input" /> 
    <input type="button" id="search_button" value="Search" /> 
    </script> 



    </body> 
</html> 

包括所有的腳本是最新版本。什麼是我的失敗?

感謝大家誰願意幫我:)

yaaan

回答

1

這裏的工作示例的代碼。我把它清理了一下。

<!DOCTYPE html> 
    <head> 
    <meta charset="utf-8"> 
    <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script> 
    <script type='text/javascript' src='http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js'></script> 
    <script type='text/javascript' src='http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.5.3/backbone-min.js'></script> 
    <script type="text/javascript"> 
     $(function(){ 
     SearchView = Backbone.View.extend({ 
      initialize: function(){ 
      _.bindAll(this, 'render'); 
      }, 
      render: function(){ 
      $(this.el).html($("#search_template").html()); 
      } 
     }); 

     var search_view = new SearchView({ el: $("#search_container") }); 
     search_view.render(); 
     }); 
    </script> 

    <script type="text/template" id="search_template"> 
     <label>Search</label> 
     <input type="text" id="search_input" /> 
     <input type="button" id="search_button" value="Search" /> 
    </script> 
    </head> 
    <body> 
    <div id="search_container"></div> 
    </body> 
</html> 

的調用_.template()被扔一個錯誤,因爲模型沒有被傳遞給它,所以我把這種方法叫出來。

像@nikoshr指出的那樣,一旦SearchView被實例化,您就需要調用render()方法。

從我改變的代碼還有一些其他小的調整,你可以看看。