我在/users
url上有一个带有删除按钮的用户列表。我的删除路线如下:
app.route('/users/:userId')
.get(users.read)
.put(users.updateById)
.delete(users.delete);
app.param('userId', users.userById);
但问题是,我的删除按钮正在/users
url上调用删除,所以我得到了DELETE http://localhost:3000/users 404 (Not Found)
。我该如何解决这个问题?我的控制器remove()函数,你可以在下面看到。如何将'/user/' + user._id
传递给它?用户仅从作用域中正确删除:(
$scope.remove = function(id) {
var user = $scope.users[id];
var modalOptions = {
closeButtonText: 'Cancel',
actionButtonText: 'Delete user',
headerText: 'Delete ' + user.displayName + '?',
bodyText: 'Are you sure you want to delete this user?'
};
modalService.showModal({}, modalOptions).then(function() {
if (user) {
user.$remove();
for (var i in $scope.users) {
if ($scope.users[i] === user) {
$scope.users.splice(i, 1); // remove item from scope
}
}
}
});
};
用户服务是mean.js安装的基础
angular.module('users').factory('Users', ['$resource',
function($resource) {
return $resource('users', {}, {
update: {
method: 'PUT'
}
});
}
]);
angular资源默认有以下方法:get、save、query、remove、delete。除非另有指定,否则它们不会以您需要的方式在url中传递param。在这种情况下,您需要指定remove
方法,并确保param在url中被传递。
angular.module('users').factory('Users', ['$resource',
function($resource) {
return $resource('users', {}, {
update: {
method: 'PUT'
},
remove: {
method: 'DELETE',
url: 'users/:id',
params: {id: '@_id'}
}
});
}
]);
这假设用户对象具有_id
属性,这在平均堆栈中很常见。您可能应该以相同的方式设置、保存和更新。