Javascript 保存添加和删除的用户

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

嗨,我在客户端使用angularJs。我有一个视图,用户可以在其中添加和删除如下项目:

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”,而您的值是其添加或删除状态。谢谢。我按照你的建议做了,效果很好。