Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 理解AngularJS';新加坡元资源_Javascript_Angularjs_Ngresource - Fatal编程技术网

Javascript 理解AngularJS';新加坡元资源

Javascript 理解AngularJS';新加坡元资源,javascript,angularjs,ngresource,Javascript,Angularjs,Ngresource,我不太明白如何正确使用AngularJS的$resource。例如,我有一个REST API,它返回如下数据: { "status": "success", "data": { "expand": "schema,names", "startAt": 0, "maxResults": 10, "total": 38, "issues": [{ ... }, { ... }, {...}, ...]

我不太明白如何正确使用AngularJS的$resource。例如,我有一个REST API,它返回如下数据:

{
    "status": "success",
    "data": {
        "expand": "schema,names",
        "startAt": 0,
        "maxResults": 10,
        "total": 38,
        "issues": [{ ... }, { ... }, {...}, ...]
    }
}

现在我想弄清楚的是如何在AngularJS中使用$resource,其中data.issues中的每个对象都作为资源返回(因此,在本例中,获取一个包含10个资源的数组/集合),但是我似乎无法使用AngularJS中的$resource从有限的资源中找到它,或者我可以吗?

$resource需要一个经典的“RESTful”API源。这意味着您将有一个端点,其中GET、PUT、POST和DELETE方法都将影响给定的资源类型,这些消息的主体将只包括资源,而不包括资源和一组元数据

对于您正在尝试做的事情,如果这是您一直使用的API,您可能需要使用$http来实现自己的API,因为它所响应的JSON似乎包含$resource不关心的一组元数据

唯一的另一种选择是编写某种httpInterceptor,将您从web服务获得的信息转换为$resource可以更无缝地处理的内容

虽然从语义上讲,您的web服务可能是一般意义上的“RESTful”,但在当前的经典标准中它并不是RESTful

有关REST的更多信息



编辑:在上述信息之外,如果看不到web API的签名或不知道您要做什么,就很难更详细地回答您的问题。

查看代码,blesh是正确的,所以我所做的是修改基本$resource代码,以支持自定义编码器/解码器,使$resource能够与任何可能具有自定义格式的RESTAPI一起工作。向angularjs发出pull请求,他们将包含它,这样我就不必维护这个单独的fork:

对于angular的较新版本,您可以提供对资源操作的回调,该操作将绕过外部包装

$resource('', {}, {
    query: {
        method: 'GET',
        isArray: true,
        transformResponse: function(response) {
            return JSON.parse(response).data.issues;
        }
    }
});
然后在资源回调函数中

Issue.query({
    //query params
}, function(issues) {
    //issues will be an array of your issues that you can process
    //or just add to the scope to be iterated over              
});