Angularjs 取消设置/设置对象的标志并保留更改
我正在处理用户对象。我的服务文件:Angularjs 取消设置/设置对象的标志并保留更改,angularjs,angularjs-service,Angularjs,Angularjs Service,我正在处理用户对象。我的服务文件: angular.module('UserService',['ngResource']).factory('User', function($resource){ var User = $resource('/api/users/:id', { list: { method: 'GET' }, lock: { method: 'PATCH' } } ); r
angular.module('UserService',['ngResource']).factory('User', function($resource){
var User = $resource('/api/users/:id',
{
list: { method: 'GET' },
lock: { method: 'PATCH' }
}
);
return User;
});
用户列表运行良好
<div ng:controller="UserController">
<ul>
<li ng-repeat="user in users">
<a ng:click="select(user)">
{{user.first_name}} {{user.last_name}}
</a>
</li>
</ul>
</div>
但是,当我想要执行用户锁定/解锁时,我会收到一条错误消息,说明该方法未知。有什么想法吗?怎么了?如何通过服务执行锁定?还有其他建议吗
TypeError: Object #<Resource> has no method 'lock'
TypeError:对象#没有方法“lock”
如前所述:
类对象或实例对象上的操作方法可以是
使用以下参数调用:
HTTP获取“类”操作:Resource.action([parameters]、[success]、[error])
非获取“类”操作:Resource.action([parameters]、postData、[success]、[error])
非获取实例操作:实例.$action([参数],[成功],
[错误])
因此,在您的情况下,应该调用$lock
,而不是lock
更新
发现了代码中的另一个问题。动作参数应作为第三个参数给出,而不是第二个参数。例如
var User = $resource('/api/users/:id',
{}, //we have no default parameters
{
list: { method: 'GET' },
lock: { method: 'PATCH' }
}
);
var User = $resource('/api/users/:id',
{}, //we have no default parameters
{
list: { method: 'GET' },
lock: { method: 'PATCH' }
}
);