试图采取一个URL,并在AngularJS控制器重定向该请求到最佳位置获取JSON数据。 VideoSearchCtrl绑定到搜索表单。生成的url对模板是正确的,所以我使用控制器将其重定向到json数据的位置。AngularJS,创建资源哈希
GuideControllers.controller('VideoSearchCtrl', ['$scope', 'VideoSearch',
function($scope, VideoSearch) {
var pattern = new RegExp(".*/search\\?=(.*)");
var params = pattern.exec(document.URL)[1];//redirect to videos to execute the search for the data
$scope.videos = VideoSearch.query({ resource: "videos", action: "search", q: params });
}
]);
这会发送/ videos/search?q = xyz进入查询。工厂创建资源:
var VideoSearchServices = angular.module('VideoSearchServices', ['ngResource']);
VideoSearchServices.factory('VideoSearch', ['$resource',
function($resource){
return $resource("/:resource/:action:params", {resource: "@resource", action: "@action", params: "@params"}, {
query: {
isArray: true,
method: "GET",
headers: {
"Accept": "application/json",
"X-Requested-With": "XMLHttpRequest"
}
}
});
}
]);
但服务器获得AS /视频/搜索%FQ = XYZ,没有/视频/搜Q = XYZ,因此,“秀”的方法被调用,而不是网址是什么?一个自定义的“搜索”动作。显然有一些逃跑的地方?或者,也许“?”也是资源工厂寻找的特殊模式?对于那些习惯了AngularJS或JavaScript的人来说,这可能很明显。
我有一个搜索模板,并从另一个位置检索json。这两个工作,但我不能要求与上述代码的JSON。
明白了,谢谢。其实你需要从“params”中排除“?=”,所以正则表达式已经在我的问题中更新了。资源查询将添加“?=”,只需传递键值对即可。 – pferrel
是params只是一个对象 – apneadiving
为什么你不接受答案,因为它回答? – apneadiving