12

入力フィールドを傾けて、angularjs アプリの URL をオンザフライで変更したい。

例えば

  1. 私は続けます: http://localhost/test/year/2012
  2. 入力フィールドを介して、 yearIsChanged 関数を呼び出す 2013 年に変更します。URL を次のように変更する必要があります。 http://localhost/test/year/2013
  3. しかし、私の現在の構成では、URLはに変更されています http://localhost/test/year/2012/?year=2013

私のモジュール構成。

var module = angular.module('exampleApp').
config(['$routeProvider', function ($routeProvider) {
    $routeProvider.
        when('/test/year/:year', {templateUrl: 'partials/test.html', controller: OverviewCtrl, reloadOnSearch: false}).
        otherwise({redirectTo: '/'});
}]);

コントローラーのアクション:

 function OverviewCtrl($scope,$routeParams, $location) {
      $scope.yearIsChanged = function () {
        $location.search('year', $scope.year);
    }   
}
4

3 に答える 3

7

$location.search次のような URL を作成します。

http://localhost/test/year/2012?year=2013

これはあなたが望むものではありません。使用する必要があります$location.url()

function OverviewCtrl($scope,$routeParams, $location) {
      $scope.yearIsChanged = function () {
        $location.url('/test/year/' + $scope.year);
    }   
}
于 2013-01-05T17:34:42.827 に答える
5

ルートで次のことに注意してください。

"いつ (' / テスト / 年 / : 年'"

太字の単語は routeParamであり検索 フィールドではありません

したがって、ルートを変更したい場合は、これを使用する必要があります:

    function OverviewCtrl($scope,$routeParams, $location) {
      $scope.yearIsChanged = function () {
       $location.path('/test/year/'+$scope.year)
     // .path() will set(or get) your routeParams 
     // .search() will set(or get) your seach fields like your error
     }   
   }
于 2014-06-04T08:02:41.053 に答える