2

感谢@nils,在解决这个问题后出现了这个问题,我希望有人能帮助我!

实际上,我有一个记录列表,我可以选择其中的一些,然后一键删除。

上面的代码可以正常工作,但我不确定我所做的是否正确,或者它是否会随时中断!

所以我在那里执行 HTTP 请求以删除 Array.filter() 内的记录......对吗?我觉得完全不对!

deleteSelected() {
  this.list = this.list.filter(function(val, i) {
    var id = val.id.toString();

    if (this.selected.indexOf(id) === -1) {
      return true;
    } else {

      this.$http.delete('/sources/' + id)
        .then(function() {
          return false;
        }, function() {
          return true;
        });

    }
  }, this);

  this.selected = [];
},

该数组this.list是我的对象列表,该this.selected数组包含选择要删除的 ID。

然后,如果 HTTP 请求正常,我删除 obj,如果没有,我保留它!

你认为如何做到这一点的好方法?

- - - - -编辑 - - - - -

添加一个 JSBin 以明确我需要什么!

实际上我只是在我的脚本上发现了一个问题......它不会等待 ajax 响应从数组中删除项目,所以如果其中一些记录无法删除,它也会从数组中删除

有人吗?

JS斌

4

2 回答 2

2

我做的是这样的:

<ul>
     <li v-for="item in list" @click="deleteItem(item)"></li>
</ul>

因此,您基本上将列表项传递给 delete 方法,该方法依次执行:

deleteItem: function(item) {
    # Ajax delete request
    .successs(
        this.list.$remove(item);
    )

这能解决你的问题吗?

于 2016-04-03T08:05:52.263 回答
0

因为我虽然该代码不起作用,但我找到了一个很好的解决方案!

它不起作用,因为它是批量删除,所以每次删除都是一个请求,但我已经立即让每个人都做了,脚本不会等待答案从列表中删除该项目!如果记录最终没有被某些验证删除,它也会从列表中删除!

所以我所做的是发送所有删除请求,当最后一个请求完成时,我发出一个新请求以更新整个列表!

这是代码:

// block the records list
$(this.$els.dataGrid).block();

// init a counter
var itemsProcessed = 0;

// get length of records to be deleted
var length = this.selected.length;

// looping to delete one for each
this.selected.forEach((item) => {

  // removeLossReasonById() is a method that mand the HTTP DELETE request and then()
  this.removeLossReasonById(item).then((response) => {

    // if does not delete for any reason show a notify
    if (!response.ok)
      $.Notification.error(response.data);

    // increment the counter
    itemsProcessed++;

    // if is the last iteration it's gonna unblock the records list and clear my array of items to be removed
    if (itemsProcessed === length) {
      this.selected = [];
      this.getLossReasons().then(() => $(this.$els.dataGrid).unblock());
    }
  });
});

希望它可以帮助某人!

于 2016-04-14T00:42:26.627 回答