試圖採取一個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