关于angular.js中的$resource中的问题。

就比如下面这段代码好了:

angular.module('myApp').factory('Entry', function($resource){
    return $resource('/api/entries/:id', {id:'@_id'},{
        update: {
          method: 'PUT'
        }
    });
});

这里面的/api/entries/:id这个:id是什么意思啊?{id:'@_id'}还有这个@_id又表示什么意思呢?为什么前面多加了一个_了,我知道好像$resource在保存数据的时候会自动增加一个属性就是_id,但是这前前后后到底有什么因果关系呢?
阅读 3.5k
3 个回答

感谢邀请吧,虽然我从来没用过ngResource

那我就按序回答吧

/api/entries/:id里,:id表示什么意思”

答: :id是一个占位符行为,意思是,在你真正发起请求时,该位置会被真正传入的的参数所替换。譬如:/api/entries/9970

"第二个参数{id:'@_id'}里,@_id又是什么意思"

答: 第二个参数是默认参数。如果以@开头,则表示真正请求时,会从你传入的对象中找@后面的的字段,这里就是从你传入的对象中找_id字段对应的值,并替换URL里的:id,形成真正的URL。

最后,ngResource的文档虽然写的不怎么样,但我说的这些里面都有。建议仔细看文档,不理解的地方,多实验,对照结果理解

我已经好久没使用过$resource了,不过'/api/entries/:id'是请求数据的路由,:id会被后面的{id:'@_id'}中的@_id替代,:id是一个路由参数,应该就是这个样子,好久不用,忘了

谢邀。

其实我也基本没怎么使用$resource这个东西,与ui-router类似,其实说白了都是路由更改时传参数的问题,只是形式上有所不同。@leftstick说的很详细了,我就不用再解释了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进