3

RequireJS/Backbone.js アプリで HTML5 pushState に問題があります。何か間違ったことをしていると確信していますが、問題を特定できません。何時間も試しました。

序文: すべての RequireJS 依存関係は正しいフォルダーにあります。

ここに私の問題があります: 私は基本的な小さなセットアップを持っています - 私が使用している唯一のバックボーン コンポーネントはルーターです。デフォルトの '' ルートでは、ルーターの 'home' メソッドを呼び出します。このメソッドは、「テスト」を警告するだけで、機能します。

ただし、最上位ファイルに{pushState: true}パラメーターとして追加すると、「ホーム」メソッドは呼び出されなくなります。Backbone.history.start()app.js

これらは、それが起こっているコードのブロックです:

index.html:

<!doctype html>
<html>
  <head>
    <title>Todo</title>
    <script data-main="assets/js/app/app.js" src="assets/js/app/lib/require.js"></script>
  </head>
  <body>
    <div id="main"></div>
  </body>
</html>

app.js:

require.config({
  baseUrl: 'assets/js/app',
  paths: {
    'underscore': 'lib/underscore',
    'jquery': 'lib/jquery',
    'backbone': 'lib/backbone',
    'text': 'lib/text',
    'handlebars': 'lib/handlebars',
    'router': 'router/router'
  },
  shim: {
    'underscore': {
      exports: '_'
    },
    'backbone': {
      deps: ['underscore', 'jquery'],
      exports: 'Backbone'
    }
  }
});
require(['router', 'backbone'], function(Router, Backbone) {
  var router = new Router();
  Backbone.history.start({ pushState: true });
});

ルーター.js:

define(['backbone'], function(Backbone) {
  var Router = Backbone.Router.extend({
    routes: {
      '': 'home'
    },
    home: function() {
      alert('test');
    }
  });
  return Router;
});

私は何を間違っていますか?これは間違った複雑なアプローチですか?

4

1 に答える 1