尝试获取 url 并在 AngularJS 控制器中将该请求重定向到获取 json 数据的最佳位置。VideoSearchCtrl 绑定到搜索表单。生成的 url 对于模板是正确的,所以我使用控制器将其重定向到 json 数据的位置。
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"
}
}
});
}
]);
但是服务器将 url 获取为 /videos/search%fq=xyz,而不是 /videos/search?q=xyz,因此调用的是“show”方法而不是自定义的“search”操作。明明有什么逃到什么地方?或者也许是“?” 也是资源工厂寻找的特殊模式?对于习惯 AngularJS 或 javascript 的人来说,这可能是显而易见的。
我有一个用于搜索的模板,并且 json 是从不同的位置检索的。两者都有效,但我不能用上面的代码要求 json。