Javascript 保存添加和删除的用户
嗨,我在客户端使用angularJs。我有一个视图,用户可以在其中添加和删除如下项目:Javascript 保存添加和删除的用户,javascript,angularjs,spring-boot,Javascript,Angularjs,Spring Boot,嗨,我在客户端使用angularJs。我有一个视图,用户可以在其中添加和删除如下项目: app.controller('demoController', function($scope) { // initial items $scope.items = [ 'item one', 'item two', 'item three' ]; // add an item $scope.add = function
app.controller('demoController', function($scope) {
// initial items
$scope.items = [
'item one',
'item two',
'item three'
];
// add an item
$scope.add = function() {
$scope.items.push($scope.input);
};
// remove an item
$scope.remove = function(index) {
$scope.items.splice(index, 1);
};`enter code here`
});
当用户完成时,我希望他单击一个按钮。之后,我会将所有添加和删除的项目发送到服务器以更新数据库。我不能每次点击都这样做,因为我需要所有信息来填写我服务器部分的电子邮件。我知道如何删除和添加项目,但我不知道如何找到删除的项目和添加项目并将其发送到服务器。有谁知道我怎么做吗?
非常感谢。您只需使用1个阵列即可完成此操作。您只需创建一个新属性并将其设置为true(如果已删除),否则设置为false 然后在后端,您可以获取访问此属性的所有已删除项 请参见下面的示例:
(函数(){
"严格使用",;
有棱角的
.module('应用程序',[])
.控制器(“demoController”,demoController);
demoController.$inject=['$scope'];
功能控制器($scope){
//初始项目
$scope.items=[
{
“名称”:“第一项”,
“已删除”:false
},
{
“名称”:“第二项”,
“已删除”:false
},
{
“名称”:“第三项”,
“已删除”:false
}
];
//添加项目
$scope.add=函数(){
$scope.items.push({
“名称”:$scope.input,
“已删除”:false
});
};
//删除项目
$scope.remove=函数(索引){
$scope.items[index]。已删除=!$scope.items[index]。已删除;
};
}
})();代码>
名称
远离的?
删除项目
添加项
现在,如果要同时发送添加和删除的内容,必须将删除的内容实际存储在对象本身的某个位置,并带有类似@developer033的标志,或者存储在其他对象中
对我来说,最好将所有添加和删除的元素存储在一个对象中。现在,您无需单击按钮并在每次添加或删除时发送更改。完成添加和删除操作后,只需将整个对象连同AJAX请求发送到服务器,即可执行逻辑:
function demoController($scope, $http, $q) {
$scope.submitItems = function(){
sendItems($scope.items).then(function () {
alert("Successfully deleted PT");
}, function (error) {
alert(error);
});
};
// ....
var sendItems = function (items) {
var request = $http({
url: _SERVER + 'edit/sendItems', // for example
method: 'POST',
data : items
params: {
}
});
return request.then(function (data) {
return $q.when(data);
}, function (error) {
return $q.reject(error);
});
}
// ....
}
在调用服务器的位置以及此方法sendItems
应该在的位置提供服务是一种很好的做法。但我们尽量保持简单
现在,在Spring中的rest控制器中,您必须指定@RequestBody
参数:
@RequestMapping(value = "/sendItems", method = RequestMethod.POST)
public String editProductParameters(@RequestBody ArrayList<Item> items) {
//your logic goes here
return "Success"
}
@RequestMapping(value=“/sendItems”,method=RequestMethod.POST)
公共字符串editProductParameters(@RequestBody ArrayList项){
//你的逻辑是这样的
返回“成功”
}
其中,项.class
应包含以下字段:字符串名称
和布尔删除
也应具有deffault构造函数(如果类中没有构造函数的实现,或者如果没有参数的构造函数,则指定deffault构造函数)还可以为这两个字段创建getter和setter。house是使用默认映射将整个对象数组($scope.items)从客户端传递到服务器所需的需求
祝你好运所以你想向用户发送他们添加和删除的内容??是的,@AdamHarrison我不会这样做。为什么不将他们删除的内容推送到一个数组中,并将他们添加到一个数组中,然后使用$http使用ajax将其发送到后端?我在考虑过这一点,但是如果用户添加一个项目,并在他删除该项目之后。我必须在添加的项目中重新查找该项目,如果他这样做,他将开始删除并添加相同的项目。我觉得他们有更好的麦加尼斯和安格拉斯?可能是Iam rong?您可以使用一个关联数组,其中键是您当前的数组值“item one”,而您的值是其添加或删除状态。谢谢。我按照你的建议做了,效果很好。