1

私はangularjsでルーティングを実装しようとしています。しかし、私はcakephpで行われているのと同じ方法でそれをやりたいと思っています。例:cakephpで次のようなものを渡すと

blog/manager/users/index/page:2/sort:username/direction:asc 

また

blog/manager/users/index/sort:username/direction:asc/page:2

どちらも同じ結果を生成します。つまり、cakephpは、URLで渡された名前付きパラメーターを任意の順序で理解します(順序は関係ありません)。anglejsで同じことをする必要がある場合はどうなりますか?今のところ、angularjsのルーティングコントローラーのコーディングは次のとおりです。

    angular.module('productapp', []).
    config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/productapp', {templateUrl: 'partials/productList.html', controller: productsCtrl}).
        when('/productapp/:productId', {templateUrl: 'partials/edit.html', controller: editCtrl}).
        otherwise({redirectTo: '/productapp'});
        }], 
        ['$locationProvider', function($locationProvider) {
            $locationProvider.html5Mode = true;
}]);

名前付きパラメーターのすべての組み合わせをハードコーディングする必要がありますか?またはこれに対する解決策はありますか?

4

2 に答える 2

0

これを試すことができます:

when('/blog/manager/users/index/:param1/:param2/:param2, {templaeURL: 'mytmpl', controller: MyCtrl}).

これで、param1、param2、および param3 は何でも受け取ることができますが、パラメーターで何かをしたい場合は、コントローラーで検証する必要があります (例: MyCtrl)。

于 2012-09-24T16:15:30.563 に答える
0

PHP (または任意のバックエンド言語) では、mod_rewrite と$_GETオブジェクトのおかげで、URL を柔軟に扱うことができます。JavaScript では、無料で提供されている余分なロジックをすべて追加する必要があります。

上記のブログ URL の例を使用して、Angular でそれらを記述する方法を次に示します。

$routeProvider.
    when('blog/manager/users/index/:page/:sort/:direction', {
        controller: blogController
    }).
    when('blog/manager/users/index/:sort/:direction/:page', {
        controller: blogController
    });

パラメーターの可能な組み合わせと順序ごとにルートを作成したくない場合は、パラメーターを調べるresolveか、ルーティング イベントを監視するカスタム params 関数を作成することをお勧めします。

于 2013-01-23T01:32:50.097 に答える