12

次のコードで単純な backbone.js ビューを作成しようとしています:

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.1/underscore-min.js"></script>
        <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script>
        <!--<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script> -->
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            var BodyView = Backbone.View.extend({
                el:$('body'),
                initialize : function() {
                    console.log("view init");
                }
            });

            new BodyView();
        </script>
    </body>
</html>

しかし

インスタンスオブチェックで関数を期待しているというエラーが発生しましたが、[オブジェクトオブジェクト]を取得しました

この行に - new BodyView();

古いバージョンの backbone.js(0.3.3) を使用している場合、このコードは機能しています。

このエラーが発生する理由と解決方法を教えてください。よろしくお願いします。

PS -このサンプル バックボーン js アプリを作成するために、主にhttp://backbonetutorials.com/what-is-a-view/http://documentcloud.github.com/backbone/#Viewに従っています。

4

2 に答える 2

19

チェックアウトする必要がある基本的な事項:

new BodyView()次のように jQuery.ready でラップします。

 var BodyView = Backbone.View.extend({
     el:$('body'),
     initialize : function() {
         console.log("view init");
     }
 });

 $(function() {
        new BodyView();
 });

アンダースコアとバックボーンの前に jQuery をロードする

jquery のスクリプト行は、Backbone の前にある必要があります。

あなたのコードは実際に動作します: http://jsfiddle.net/vTuPJ/

于 2012-05-02T10:29:04.753 に答える
6

私のために働きます。documentReadyブロック内のすべてのバックボーン コードをラップしてみてください。

$(function(){
  // .. your backbone code
});​

もう1つのことは、スクリプトのロード順序を変更する必要があるかもしれないということです:

  1. 下線
  2. jquery
  3. 背骨
于 2012-05-02T10:27:51.447 に答える