传递给$ resource的@id是什么?

时间:2013-07-09 22:41:53

标签: angularjs

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

什么是@id?

在资源doc page上有人这样说,但我仍然不明白。

  

如果参数值以@为前缀,那么该值的值   参数是从数据对象中提取的(对非GET有用)   操作)&#34。这里的数据对象是指postData对象if   非GET" class"如果是非GET,则使用action,或者实例本身   使用了实例操作。

2 个答案:

答案 0 :(得分:67)

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

鉴于此方法:

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

如果我在发布的数据中有属性“petName”,则该属性的值将放在我的网址中的:theName变量中。想象一下,帖子数据为{"petType": "cat", "petName": "Spot"},网址会显示为"/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"}

另一方面,文档可能非常令人困惑。你有没有选择过艰难的课程而且教授是一个几乎不说你语言的聪明人?烨。

答案 1 :(得分:0)

var myResource = $resource("/entries/:theName", 
                           {theName: '@petName'},
                           {update : {
                                      method: "PUT", 
                                      isArray: false
                                     }
                            });