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

ご覧のとおり、これにより「Alerst suck.」というテキストのアラートが表示されるはずです。代わりに、firebug コンソール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をロードしましたが、動作し始めました。backbone.js の縮小されていないバージョンでもテストしましたが、エラーはより詳細$ is not a functionでした。繰り返しますが、backbone.js が修正される前に jQuery をロードすると修正されます。

編集console.log($):ビューの初期化の直前に行うときに backbone.js の後に jQuery をロードすると、$ が関数であることが示されます。なぜ backbone.js が機能しないのでしょうか? 誰かがこれを説明できますか?

于 2012-04-21T01:02:02.753 に答える