バックボーン ビューを作成しようとしたときに、他の人が同様の問題を抱えていたようです。しかし、私の問題は違うと思います。これが私のページにバックボーンを含める方法です。
<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 ファイル以外のものを含める必要がありますか?