在来自 angularjs 站点的“连接后端”演示代码中,他们设置了一个 db 调用。据我所知,他们正在扩展更新功能,以添加 mongolab api 所需的一些额外参数。
angular.module('mongolab', ['ngResource']).
factory('Project', function($resource) {
var Project = $resource('https://api.mongolab.com/api/1/databases' +
'/angularjs/collections/projects/:id',
{ apiKey: '4f847ad3e4b08a2eed5f3b54' }, {
update: { method: 'PUT' }
}
);
Project.prototype.update = function(cb) {
return Project.update({id: this._id.$oid},
angular.extend({}, this, {_id:undefined}), cb);
};
然后他们像这样调用更新属性:
$scope.save = function() {
$scope.project.update(function() {
$location.path('/');
});
我尝试使用此代码使用本地开发服务器构建演示应用程序,因此我省略了扩展更新属性,因为我不需要额外的 $oid 参数。我需要的是指定更新方法应该使用 PUT。我的代码是这样的:
var Unit = $resource('http:/localhost/api/unit/:id', {id:'@Unit_Id'},
{'update': { method: 'PUT' }});
然后像这样调用它:
$scope.save = function () {
$scope.unit.update(function () {
$location.path('/unitlist');
});
但我发现代码只在更新前使用美元符号运行,如下所示:
$scope.save = function () {
$scope.unit.$update(function () {
$location.path('/unitlist');
});
所以这是我的问题:
- 在演示代码中,“更新”实际添加到 Project 变量的位置在哪里?作为 $resource 中的参数或使用原型扩展项目?
- 为什么我的代码中未定义更新,除非我在调用它时添加 $ 前缀?