0

ナビゲーションを作成しています。アクティブな「リンク」では、フィードが読み込まれますが、検索語は異なります。

基本的に、すべてのリンクは同じです。唯一の違いは、.factory パラメータに設定された用語です。

すべてが同じであるため (.controller も含めて、検索する必要がある用語を指定できる routeProvider 内にクエリ用語を設定することは可能ですか?

それとも、リンクごとに新しいコントローラーを作成し、そこに用語を設定するしかないのでしょうか? 私が目指しているのは、コードをシンプルで効率的、かつ最小限に保つことです。

  angular.module('termSearch', ['ngResource'])

  .config(['$httpProvider', function ($httpProvider) {
      $httpProvider.defaults.headers.common["X-Requested-With"] = undefined;
  }])

  .config(function($routeProvider) {
    $routeProvider
      .when('/term1', {templateUrl: 'views/feedlist.html', controller: 'searchtermCtrl' })      
      .when('/term2', {templateUrl: 'views/feedlist.html', controller: 'searchtermCtrl' })

      .otherwise({redirectTo: '/term1'});
  })

  .factory('Feed', function ($resource) {
      return $resource('https://www,example.com/:term/json', {}, {
          query: {
              method: 'GET',
              isArray: false,
              params: {
                  term: "term#"
              }
          }
      });  
  })

  .controller('searchtermCtrl', function($scope, Feed){
    $scope.results = Feed.query();
    $scope.feed = function (term) {
        Feed.get({
            term: term
        }, function (results) {
            $scope.results = results
            console.log(results);
        });
    }
  })

正しい方向に助けてくれてありがとう。

ロク。

4

1 に答える 1

1

リソース プレースホルダーと $routeParams を使用して、次のようなハッシュ URL を定義します<a href="#term/search+term+here">Term X</a>。検索用語は、ユーザー入力またはデータベースからの用語のリストにすることができます

  angular.module('termSearch', ['ngResource'])

  .config(['$httpProvider', function ($httpProvider) {
      $httpProvider.defaults.headers.common["X-Requested-With"] = undefined;
  }])

  .config(function($routeProvider) {
    $routeProvider
      .when('/term/:q', {templateUrl: 'views/feedlist.html', controller: 'searchtermCtrl' })      

      .otherwise({redirectTo: '/term/'});
  })

  .factory('Feed', function ($resource) {
      return $resource('https://www.example.com/:term/json', {}, {
          query: {
              method: 'GET',
              isArray: false
          }
      });  
  })

  .controller('searchtermCtrl', function($scope, Feed, $routeParams){
    $scope.feed = Feed.query({ term : $routeParams.q }); // This will get the term from url
  })

ルートが新しい用語に変わると、リソースは新しいデータパラメータを送信します

于 2013-09-22T17:09:57.727 に答える