0

我正在学习backbone.js,并且已经遇到了问题。

我正在使用 LABjs 加载我的脚本,如下所示:

$LAB.setOptions({BasePath : path})
.script('libs/underscore.js?v=1.3.3')
.script('libs/backbone.js?v=0.9.2')
.script('libs/jquery.js?v=1.7')
.script('libs/bootstrap.min.js?v=2.0.2').wait()
.script('test.js');

在我的 test.js 我有这个(来自backbonetutorials.com):

(function($){
SearchView = Backbone.View.extend({
    initialize: function(){
        alert("Alerts suck.");
    }
});

var search_view = new SearchView;
})(jQuery);

如您所见,这应该给我一个带有文本“Alerstuck.”的警报。相反,它会在我的萤火虫控制台上引发错误 - i is not a function(backbone.js 的 34 行)。

如果我尝试像这样初始化视图,var search_view = new SearchView({el: $('#some_dom_element')});它会给我另一个错误 - invalid 'instanceof' operand i(backbone.js 文件的 34 行)。

jQuery 对象$被定义。我可以毫无问题地初始化 Backbone.js 模型。只是查看会抛出这些错误。我错过了什么?

4

1 回答 1

5

似乎加载脚本的顺序很重要。我现在首先加载了 jQuery,它开始工作了。我还用非缩小版的主干.js 对其进行了测试,错误更加详细$ is not a function。再说一遍 - 在backbone.js 修复它之前加载jQuery。

编辑:当我console.log($)在视图初始化之前在backbone.js 之后加载jQuery 时,它显示$ 是一个函数。为什么backbone.js 不能工作呢?有人可以解释一下吗?

于 2012-04-21T01:02:02.753 回答