3

バックボーン ビューを作成しようとしたときに、他の人が同様の問題を抱えていたようです。しかし、私の問題は違うと思います。これが私のページにバックボーンを含める方法です。

<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript">
    //<!--
    jQuery.noConflict ();
    //-->
</script>
<!--[if lt IE 9]><script type="text/javascript" src="/js/html5.js"></script><![endif]-->
<script type="text/javascript" src="/js/backbone-min.js"></script>
<script type="text/javascript" src="/js/showbase.js"></script>

それが問題かもしれないと思ったので、jQuery.noConflict() への呼び出しを追加しました。そうではありませんでした。

これまでの showbase.js ファイルの内容は次のとおりです。この単純なテストは失敗します。

jQuery (document).ready (
            function ()
            {
                var props = '';
                for (var p in Backbone)
                    props += p + ': ' + typeof Backbone [p] + "\n";
                alert (props);

                props = '';
                for (var p in Backbone.Model)
                    props += p + ': ' + typeof Backbone.Model [p] + "\n";
                alert (props);

                alert (typeof Backbone.Model);
            }
);

最初のアラートでは、次のように表示されます。

VERSION: string
$: function
noConflict: function
emulateHTTP: boolean
emulateJSON: boolean
Events: object

2 番目のアラートでは、何も表示されません。

3 番目のアラートでは、「未定義」と表示されます。

Firebug から取得したエラー メッセージには、「TypeError: h is undefined」と表示され、backbone-min.js ファイル内のどこかにあることを示しています。

http://backbonejs.org/docs/todos.htmlの Todos の例に従っています。その例では、最初に、jQuery ドキュメントの準備完了関数で Backbone.Model クラスを拡張します。それが私がやっていることのすべてです。しかし、Backbone.Model クラスはその時点では存在すらしていません。

this.Model にアクセスしようとしているわけではありません。this にアクセスできるコードのポイントに到達することはありません。Model クラスは Backbone オブジェクト内では定義されていません。backbone-min.js ファイル以外のものを含める必要がありますか?

4

1 に答える 1

7

問題は、underscore.js が含まれていなかったことです。Loamhoof が指摘したように、backbone.js で必要です。

さらに調査を行いました。このページによると、バックボーンは json2.js のみに依存して JSON.parse および JSON.stringify 関数を提供します。これらは現在、ほとんどのブラウザーでプレーンな JavaScript の一部になっています。したがって、そのページのコメントによると、json2.js は、JSON 機能を提供しない古いブラウザーをサポートするためにのみ必要なはずです。

于 2013-06-17T10:09:37.943 に答える