2013-02-22 42 views
1

爲什麼會EL的underfined錯誤 - 感謝Backbone.js的爲什麼EL未定義

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script> 
<script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min.js"></script> 
<script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script> 

<script type ="text/javascript"> 
    var SimpleView = Backbone.View.extend({ 
     tagName: 'li', 
     id: 'todo-id', 
     className: 'todo-class', 
     render: function() { 
      var htmls = '<h3>jhjljlkjkljkljkljkljkjkjj</h3>'; 
      //this.$el.html(htmls); 
      $(this.el).html(htmls); 
     } 



    }); 
    var simpleView = new SimpleView(); 
    simpleView.render(); 
    //console.log(simpleView.el); 



    </script> 
+0

在你的'render'方法中,放一個'console.log(this)'併發布結果。 – marteljn 2013-02-22 16:38:26

+1

聳聳肩。它在這裏工作:http://jsfiddle.net/GYGF7/ 哦,嗯,你指的是一個古老的骨幹版本。 – 2013-02-22 16:41:03

+0

你應該接受@EdwardMSmith的回答。這絕對是最好的解決方案。您可以調整代碼以使其正常工作,但升級無疑是最佳選擇。 – marteljn 2013-02-22 17:57:50

回答

3

您的代碼有效。

http://jsfiddle.net/GYGF7/

var SimpleView = Backbone.View.extend({ 
    tagName: 'li', 
    id: 'todo-id', 
    className: 'todo-class', 
    render: function() { 
     var htmls = '<h3>jhjljlkjkljkljkljkljkjkjj</h3>'; 
     //this.$el.html(htmls); 
     $(this.el).html(htmls); 
    } 



}); 
var simpleView = new SimpleView(); 
simpleView.render(); 
console.log(simpleView.el); 

您的問題是,你指着一個很老的版本骨幹(0.3.3)。

更新您的依賴鏈接以加載最新版本。

3

您需要定義什麼是el

var SimpleView = Backbone.View.extend({ 
     el: $("YourElement"), 
     tagName: 'li', 
     id: 'todo-id', 
     className: 'todo-class', 
     render: function() { 
      var htmls = '<h3>jhjljlkjkljkljkljkljkjkjj</h3>'; 
      //this.$el.html(htmls); 
      $(this.el).html(htmls); 
     } 
    }); 

編輯

看起來我可能是錯的:

如果指定,則爲

。如果不是,el是一個空格。 (從http://backbonejs.org/#View-el