0

これが私のコードです:-

<!doctype html>
<html>
<head>
  <title></title>
</head>
<body>
    Everything related to routers....
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js">    </script>
    <script src="../underscore-min.js"></script>
    <script src="../backbone-min.js"></script>
    <script type="text/javascript">

      var Router = Backbone.Router.extend({
        routes: {
            "foo/:bar" : "paramtest",
            "*action" : "func"
        },
        func: function (action) {
            console.log(action);
        },
        paramtest:function (p) {
            console.log(p);
        }
      });

      new Router();
      Backbone.history.start();
   </script>
</body>
</html>

キャッチされていない TypeError: オブジェクト # has no method 'on' backbone-min.js:1 h.extend.start backbone-min.js:1 (無名関数)

4

1 に答える 1

3

現在のバックボーンには、次の内部Backbone.history.startが含まれています。

if (this._hasPushState) {
  Backbone.$(window).on('popstate', this.checkUrl);
} else if (this._wantsHashChange && ('onhashchange' in window) && !oldIE) {
  Backbone.$(window).on('hashchange', this.checkUrl);
} else if (this._wantsHashChange) {
  this._checkUrlInterval = setInterval(this.checkUrl, this.interval);
}

$(window).on()呼び出しに注意してください(Backbone.$通常の関数への名前空間参照にすぎませjQueryん)、それがエラーの原因です。jQuery 1.4.4 を使用していますが、onメソッドはバージョン 1.7 まで jQuery に追加されませんでした。

次の 2 つのオプションがあります。

  1. jQuery を 1.7 以降、できれば最新の jQuery にアップグレードします。
  2. バックボーンを jQuery の を使用しないバージョンにダウングレードしますon

オプション (2) にどのバージョンを使用するかはわかりませんが、とにかくオプション (1) の方が良い考えです。

于 2013-04-14T06:34:12.203 に答える