1

現在、バックボーン アプリケーションでハッシュ ルートを使用しています。完全なルートを使用したいので、( leadsSPA のページである)次のような URL を使用します。

leads/#/main-contact

それよりも

leads#main-contact

この行を追加しました:

Backbone.history.start({pushState: true, root: "/"});

しかし、ルート/main-contactは機能しません。サーバーの変更が必要になる場合があることを理解しています。これを機能させるために何が関係しているのか誰か教えてもらえますか?

4

4 に答える 4

0

バックボーンルーターのルートとして/を使用せずにmain-contactを試してください

于 2013-02-20T21:47:01.107 に答える
0

すでに述べたように、サーバーが に対するリクエストを処理することlead/、つまりこれらのリクエストをlead.phpなどに転送することを確認する必要があります。これがどのように行われるかは、通常、使用されるサーバー側の言語ではなく、サーバー ソフトウェアに依存します。たとえば、グーグルで簡単に検索すると、次のリンクが見つかりました。

  1. Apache mod_rewrite を使用して末尾のスラッシュを削除します
  2. Apache のデフォルト ディレクトリ インデックス ファイルを使用しているときに、URL から末尾のスラッシュを削除するにはどうすればよいですか?

Backbone.Routerもする必要がないからです。Backbone.history先頭のスラッシュと末尾の空白をルートから自動的に削除します。つまり、 と の両方にmain-contact一致します。以下に短い例を示します。#main-contact#/main-contact

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title></title>
</head>
<body>
    <ul>
        <li><a href="#/home">Home</a></li>
        <li><a href="#/help">Help</a></li>
        <li><a href="#/about">About</a></li>
    </ul>
    <div id="message"></div>

    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="https://raw.github.com/documentcloud/underscore/master/underscore.js"></script>
    <script src="https://raw.github.com/documentcloud/backbone/master/backbone.js"></script>
    <script type="text/javascript">
    $(function () {
        var MyRouter = Backbone.Router.extend({
            routes: {
                "home": "home",
                "help": "help",
                "about": "about"
            },
            home: function () { this.msg("home"); },
            help: function () { this.msg("help"); },
            about: function () {this.msg("about"); },
            msg: function(m) { $("#message").text(m); }
        });

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

注: 上記の例は、ローカル ファイルから実行してテストしただけです。

于 2013-02-25T19:35:29.013 に答える
0

指定されたパスに関係なく、ルーターコードを含むページをサーバー側で提供する必要があります。

/leads/* ---> lead.html

サーバー側でこれを行うメカニズムは、使用しているサーバー側のテクノロジーに固有であるため、これ以上具体的に説明することはできません。

于 2013-02-09T01:41:47.447 に答える
0

Rewrite ルールを変更してファイル (ルーティング ロジックを処理するファイル) をフェッチします。

于 2013-02-24T17:58:59.037 に答える