【问题标题】:How can I remove all items from a Dojo dstore?如何从 Dojo dstore 中删除所有项目?
【发布时间】:2015-02-16 20:23:31
【问题描述】:

我无法从 dstore 中删除所有项目。我正在尝试这个,它似乎应该可以工作,但最终失败了:

var TrackableMemory = declare([ Memory, Trackable ]);
var userMem = new TrackableMemory({
    data: {the data...},
    idProperty: '_id'
});    
userMem.forEach(function (userObj) {
    userMem.remove(userObj._id);
});

我在this fiddle 中提出了一个有效(或不有效)的示例。找不到最后一条记录时出现“cannot read property '_id' of undefined”错误,请参见控制台。

我有其他东西连接到这个商店实例,所以我真的不能通过重新定义 userMem 来重置所有东西。

我做错了什么?如何从 dstore 中删除所有项目?

【问题讨论】:

  • 啊,看来这可能只是一个JS数组问题。例如,var a = ['a', 'b', 'c', 'd']; a.forEach(function (letter) {var ind = a.indexOf(letter); a.splice(ind, 1);});。现在a['b', 'd']。看起来这就是 dstore 使用其 forEach 函数和 Memory 的 removeSync 所做的事情?

标签: dojo dgrid


【解决方案1】:

原来是一个简单的 JS 数组问题,即修改我正在迭代的数组。使用简单的for 向后循环数组即可:

userMem.fetch().then(function (users){
    for (var i = users.length - 1; i >= 0; i--) {
        userMem.remove(users[i]._id);
    }           
});

【讨论】:

    【解决方案2】:

    这对我有用

    // Forget all data
    myGrid.store.data = [];
    
    // Refresh the grid
    myGrid.refresh();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 2014-06-09
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多