2

これは、BackboneJS アプリのルート オブジェクトです。

       routes: {
            ""               : "_navigate",
            "home"           : "_navigate",
            "blog"           : "_navigate",
            "photos"         : "_navigate",
            "notes"          : "_navigate",
            "about"          : "_navigate",
            "singlepost_:id" : "_navigate"
        },

_navigateルートをメソッドにリダイレクトします。これは次のようになります。

        _navigate: function(postId) {
            if (postId) {
               // show single entry
               return;
            }

            // show regular entry
        },

それは完全にうまく機能します。ただし、繰り返しのルート オブジェクトは煩わしいと思います。

私の質問は次のとおりです:これらすべてのルートを同じメソッドに向けるより良い方法はありますか?

ありがとう!

4

2 に答える 2

2

http://backbonetutorials.com/what-is-a-router/スプラットのセクションをチェックしてください

ルート定義の「*splats」または「:params」は、関連する関数に (それぞれの順序で) 引数として渡されます。"/:route/:action" として定義されたルートは、2 つの変数 ("route" と "action") をコールバック関数に渡します。(これがわかりにくい場合は、コメントを投稿してください。より明確に説明します) 「:params」と「*splats」の使用例をいくつか示します。

routes: {

        "/posts/:id": "getPost",
        // <a href="http://example.com/#/posts/121">Example</a>

        "/download/*path": "downloadFile",
        // <a href="http://example.com/#/download/user/images/hey.gif">Download</a>

        "/:route/:action": "loadView",
        // <a href="http://example.com/#/dashboard/graph">Load Route/Action View</a>

    },

    getPost: function( id ){ 
        alert(id); // 121 
    },
    downloadFile: function( path ){ 
        alert(path); // user/images/hey.gif 
    },
    loadView: function( route, action ){ 
        alert(route + "_" + action); // dashboard_graph 
    }
于 2012-05-27T12:25:51.567 に答える
1

非常に単純です、本当に。

        routes: {
            "*actions:_id": "_navigate"
        }

BackboneJSGoogleGroupのJasonStrimpelに感謝します。

于 2012-05-27T08:17:28.553 に答える