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 回答