AngularJS,创建资源哈希

fer

尝试获取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,因此将调用“显示”方法,而不是自定义的“搜索”操作。显然在某处有逃逸吗?也许是“?” 资源工厂也在寻找一种特殊的模式吗?对于曾经使用AngularJS或javascript的人来说,这可能是显而易见的。

我有一个搜索模板,并且json是从其他位置检索到的。两者都可以,但是我不能用上面的代码要求json。

呼吸暂停

首先,请执行以下操作:

return $resource("/:resource/:action", {resource: "@resource", action: "@action"}, {

然后:

$scope.videos = VideoSearch.query({ resource: "videos", action: "search", q: params });

问题的关键是params是不是你要声明的资源的URL的一部分,你只需要声明resource,并action再添加PARAMS这是很自然的所有路由

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章