55
$resource("/entries/:id", {id: "@id"}, {update: {method: "PUT"}})

@id 是什么?

在 $resource文档页面上有人在下面这样说,但我还是不明白。

如果参数值以 @ 为前缀,则该参数的值是从数据对象中提取的(对非 GET 操作很有用)。”postData如果使用非 GET “类”操作,则此处的数据对象指的是对象,或者如果使用非 GET 实例操作,则实例本身。

4

2 回答 2

67

如果我理解正确,但我可能没有正确理解,该参数{id: @id}说明了另一种向 url 变量提供数据的方式。

鉴于此方法:

var myResource = $resource("/posts/:theName", 
                           {theName: '@petName'},
                           {enter : {
                                      method: "POST", 
                                      isArray: false
                                     }
                            });

如果我在发布的数据中有一个属性“petName”,那么该属性的值将放在:theName我的 url 中的变量中。想象一下 post 数据{"petType": "cat", "petName": "Spot"},url 将被读取"/posts/Spot"。在我看来,这@意味着要发布的对象的“属性”。

@从该值中取出url 变量将直接引用该资源参数中的值:

{theName: 'petName'} //no "@"
// url output ---->   '/posts/petName'

.

以下是参考链:

//url var--> //$resource param {..}  --->//Object to be posted
:theName---> {theName ----> @petName ---> {petName---> "Spot"

只需 5 个步骤即可将“Spot”输入网址!

.

使用上述示例的资源实例示例:

var postData = new myResource();
    postData.petType = "cat";
    postData.petName = "Spot";
    postData.$enter({}, function(data){
        $scope.data = data;
    })
    // url to post to will be '/posts/Spot', postData object will be 
    //  {"petType":"cat", "petName:"Spot"}

附带说明一下,文档可能非常混乱。你有没有上过一门困难的课程,教授是一个几乎不会说你的语言的聪明人?是的。

于 2013-07-10T00:29:16.620 回答
0
var myResource = $resource("/entries/:theName", 
                           {theName: '@petName'},
                           {update : {
                                      method: "PUT", 
                                      isArray: false
                                     }
                            });
于 2018-06-05T06:56:11.750 回答