0

これが私のルートプロバイダーです:

.config(['$routeProvider', function($routeProvider) {
            $routeProvider.
                when('/', {templateUrl: '/partials/search.html'}).
                when('/about', {templateUrl: '/partials/about.html'}).
                when('/services', {templateUrl: '/partials/services.html'})
                //otherwise({redirectTo: '/'});
                ;

        }])

/partials/search.html で検索を実行しています。検索をブックマークできるようにしたい。そこで、検索の ajax 応答を受け取るコードにこれを追加しました。

$location.path(myGetQuery);

しかし、まあ、これは routeProvider をトリガーし、フラグメントをロードせず、ビューは空のままです。これによりotherwise... redirect、空白の検索フラグメント/URL が表示され、検索クエリがなくなります。

私もこのようなものを試しました...

$routeProvider.
   when('/', {templateUrl: '/partials/search.html'}).
   when('/:pars', {templateUrl: '/partials/search.html'}).
   when('/about', {templateUrl: '/partials/about.html'}).
   when('/services', {templateUrl: '/partials/services.html'});     

のおかげで/:pars$location.path(myGetQuery);(クエリを使用して) 正しい URL でページが読み込まれますが、フラグメントはまだリロードされています。検索の応答を取得した後にこれを実行しているため、結果はなくなりました。

これを処理する正しい方法は何ですか?

4

1 に答える 1

2

を使用$location.searchして、URL のクエリ文字列値を変更できます。こちらのドキュメントを参照してください。

基本的に、検索が完了したら、次のようにすると、URL が次のように更新されます...?q=foobar

$location.search({ q: 'foobar' });

あなたの場合、渡したオブジェクトを ajax クエリに取り、それを検索に渡したいと思うかもしれません。

ルートを入力すると、 を使用$location.search()して既存の値を抽出し (URL がブックマークされている場合)、それらに基づいて検索を実行できます。

アップデート

コメントに従って、ルートを更新して を含める必要もありますreloadOnSearch: false

于 2013-09-01T15:56:12.807 に答える