我正在创建导航,当处于活动链接时,Feed会加载但搜索的术语不同。
基本上,所有链接都是相同的,唯一的区别是.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);
});
}
})
感谢您在正确的方向上提供任何帮助。
大鹏。
答案 0 :(得分:1)
使用资源占位符和$ routeParams,您可以定义一个类似于此<a href="#term/search+term+here">Term X</a>
的哈希URL。搜索词可以是用户输入或来自数据库的术语列表
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
})
现在,当路由更改为新术语时,资源将发送新数据参数