我刚刚开始在线学习骨干ebook。
但是由于我真的不理解导入错误,我一直坚持ToDo App创建......
下载Backbone.js和backbone-min.js在我的index.html中,我尝试导入Backbone或Backbone-min.js并在Firebug控制台中获得以下结果:
导入Backbone.js
<script src="js/lib/zepto.min.js"></script>
<script src="js/lib/underscore.js"></script>
<script src="js/lib/backbone.js"></script>
TypeError: this.$el.off is not a function
backbone.js line 1325 : this.$el.off('.delegateEvents' + this.cid);
导入Backbone-min.js
<script src="js/lib/zepto.min.js"></script>
<script src="js/lib/underscore.js"></script>
<script src="js/lib/backbone-min.js"></script>
TypeError: this.listenTo is not a function
app.js line 34 : this.listenTo(app.Todos, 'add', this.addOne);
app.js 正在引用this backbone view,以下是此视图的代码摘录:
initialize: function() {
this.allCheckbox = this.$('#toggle-all')[0];
this.$input = this.$('#new-todo');
this.$footer = this.$('#footer');
this.$main = this.$('#main');
this.listenTo(app.Todos, 'add', this.addOne);
this.listenTo(app.Todos, 'reset', this.addAll);
this.listenTo(app.Todos, 'change:completed', this.filterOne);
this.listenTo(app.Todos,'filter', this.filterAll);
this.listenTo(app.Todos, 'all', this.render);
app.Todos.fetch();
},
如果您已经遇到过这种问题......我不得不承认,当我尝试导入骨干网时,我真的不明白为什么会出现错误,而且我还不够熟练掌握ListenTo功能的问题。
答案 0 :(得分:3)
您必须在骨干之前加入underscore.js:
<script src="underscore-min.js"></script>
<script src="backbone-min.js"></script>
Backbone唯一的硬依赖是Underscore.js(&gt; = 1.4.3)或Lo-Dash。对于RESTful持久性,通过Backbone.Router的历史支持和使用Backbone.View的DOM操作,包括json2.js,以及jQuery(&gt; = 1.7.0)或Zepto。
此外,如果您想在代码中使用jQuery选择器($
),也请包含jQuery。
答案 1 :(得分:2)
我从github下载的项目中遇到了同样的问题。我从以下位置获得了最新的脚本,现在工作正常。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
<script src="http://documentcloud.github.io/backbone/backbone-min.js"></script>
干杯
答案 2 :(得分:1)
1)this.listenTo被添加到最新版本的Backbone中,所以你使用的Backbone库可能已经过时了。尝试使用最新版本的Backbone。 2)这个。$ el:你应该使用jQuery。如果在添加jQuery后再次出现此错误,请将console.log(此。$ el)放在此行上方..如果它正在获取一个元素,它将打印,否则为[]或未定义。
根据官方文档,Backbone唯一的硬依赖是Underscore或Lo-Dash。但是你应该使用RequireJS来设置js文件下载的顺序。