1

次のような 3 つのルートがあります。

var appRouter = Backbone.Router.extend({
    routes: {
        "": "index",
        "questionnaire/info/id/:id": "questionnaireInfo",
        "questions/edit/*params": "questionEdit"
    },
    questionnaireInfo: function(id) {
        $('#app-body').load('/dashboard/questionnaire/info/id/' + id);
    },
    questionEdit: function(questionnaireId) {
        console.log(questionnaireId, params);
    },
    index: function() {
        console.log('index');
    }
});

そして、私は次のようにそれらを初期化します:

var appRouting = new appRouter;
Backbone.history.start({
    pushState: true,
    silent: false,
    root: '/dashboard/'
});

最初のページのロードでルートが一致し、適切なメッセージが console.log に記録されます。しかし、私は次のようなリンク要素を持っています:

<a href="/dashboard">Home Page</a>

""ルートと一致しません。"questionnaire/info/id/:id"そして、この href 要素はルートと一致しません:

<a href="/dashboard/questionnaire/info/id/1">Load</a>

どうすればこれを機能させることができますか? ありがとう。

4

4 に答える 4

0

引数のBackbone.history.start呼び出しには末尾のスラッシュが必要です。root

var appRouting = new appRouter;
Backbone.history.start({
    pushState: true,
    silent: false,
    root: '/dashboard/'
});

これは、ドキュメントの例でBackbone.history確認できます。

于 2012-07-20T15:05:00.990 に答える
0

私も同じ問題を抱えていました。ルートを呼び出すリンクの前に「#」文字を追加する必要があるようです。したがって、ルーターのルートが

/dashboard/

そしてあなたのルートは

"questionnaire/info/id/:id": "questionnaireInfo"

ルートをトリガーするリンクよりも、たとえば

<a href="/dashboard/#/questionnaire/info/id/1">Load</a>

お役に立てれば。

于 2013-06-03T17:55:48.060 に答える
0

インデックス発射ですか?一般に、バックボーンのドキュメントでは、ルートを最も具体的なものから最も具体的でないものへとリストすることを推奨しています。"":"index"がすべてをキャッチするため、他のルートが呼び出されていない可能性があります。

于 2012-07-20T13:38:22.460 に答える
0

「/dashboard」と各ルートの間の「/」が抜けている可能性があります

于 2012-07-20T11:11:15.003 に答える