Backbone.js的为什么EL未定义

问题描述:

为什么会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

您的代码有效。

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)。

更新您的依赖链接以加载最新版本。

您需要定义什么是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