javascript - AngularJS,创建资源哈希

标签 javascript ruby-on-rails angularjs

尝试获取 url 并在 AngularJS Controller 中将该请求重定向到获取 json 数据的最佳位置。 VideoSearchCtrl 绑定(bind)到搜索表单。生成的 url 对于模板来说是正确的,因此我使用 Controller 将其重定向到 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。

最佳答案

首先,执行以下操作:

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

然后:

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

重点是 params 不是您必须向资源声明的 url 的一部分,您只需声明 resourceaction 然后您添加的参数对于所有路由来说都是自然的

关于javascript - AngularJS,创建资源哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19459405/

相关文章:

ruby-on-rails - 在 RoR 中的何处重新上课

javascript - 如何限制某些值被复制的数量。

angularjs - 如何在不创建新作用域的情况下使用 ng-repeat?

javascript - AngularJS:如何保持在 'run' 方法直到完成

javascript - 将 Canvas 扩展到完整的浏览器窗口

运行快速排序时 JavaScript 崩溃

javascript - NodeJS : can you pass a variable to 'require' ?

javascript - 如何使用 JavaScript 设置 box-shadow CSS 属性?

javascript - Rails - 从 javascript 调用 Controller

javascript - 如何确保 $scope.property 在使用之前具有值(value)