我是AngularJS的初学者,在此代码中找不到我的错误
var myCarResource = $resource('cars/:carId',
{
carId:'@id'
});
var car = myCarResource.get({id:'abc'});
预期网址:
.../cars/abc
被叫URL是:
.../cars?id=abc
我使用angularjs v1.2.24
任何人都可以帮助我吗? 感谢
答案 0 :(得分:5)
如 $resource paramDefaults
文档中所述:
给定模板/路径/:动词和参数{动词:'问候', 称呼:' Hello'}导致URL /路径/问候?敬礼=你好。
如果参数值以@为前缀,则为该值的前缀 参数将从上的相应属性中提取 数据对象(在调用操作方法时提供)。例如,如果 defaultParam对象是{someParam:' @ someProp'}然后是值 someParam将是data.someProp
这表明在parameterizd url中定义的任何谓词与$resource
参数默认值中定义的键或$resource
类方法(get,save等)相匹配。参数将具有该键的对应值替换url中的动词。 ' @'另一方面,在这种情况下没有正确解释,它应该是:
如果参数值以@为前缀,则为该值的前缀 参数将从相应的属性中提取出来 数据对象(在调用实例操作方法时提供)。
实例操作方法($ get,$ save,$ delete等)是用于使用$resource
类操作方法检索的数据对象的方法。当使用相同的资源链接请求时,这些通常很有用。
<强> EXAMPLE DEMO 强>
假设您的cars/abc
返回的响应json为:
{
"id": "abc"
}
阅读显示每个操作方法调用响应的注释。
var myCarResource = $resource('cars/:carId',
{
carId:'@id'
});
// This sends a GET request '/cars/?id=abc
myCarResource.get({id:'abc'});
// This sends a GET request '/cars/abc'
myCarResource.get({carId:'abc'}); // returns {"id": "abc"}
myCarResource.get({carId:'abc'}).$promise.then(function(car) {
// sends a POST request '/cars/abc', it replaces the :carId verb from the
// @id notation you have defined in the parameter default. It also sends,
// other parameter defaults defined with '@' that are defined as verbs in the url.
car.$save();
});