Javascript extjs在将重复值存储到存储区之前删除重复值
我尝试在将重复值存储到存储区之前删除它。我只想在存储中存储一次相同的值。但下面的Ext.Array.unique行似乎不起作用。有人能帮我纠正一下吗。 多谢各位Javascript extjs在将重复值存储到存储区之前删除重复值,javascript,extjs,Javascript,Extjs,我尝试在将重复值存储到存储区之前删除它。我只想在存储中存储一次相同的值。但下面的Ext.Array.unique行似乎不起作用。有人能帮我纠正一下吗。 多谢各位 var input1store = new Ext.data.Store({ fields: [{name: 'name'}], proxy: { type: 'ajax', url: 'www.requesturl.com?format=json&source1',
var input1store = new Ext.data.Store({
fields: [{name: 'name'}],
proxy: {
type: 'ajax',
url: 'www.requesturl.com?format=json&source1',
reader: {
type: 'json',
root: 'xml.result'
}
},
autoLoad: false,
sorters: [{property: 'name', direction: 'asc'}],
listeners:{
load: function(rec){
uniqueArray = Ext.Array.unique(rec.getRange());
}
}
});
您可以使用该方法筛选出加载后不希望出现在存储中的记录
请注意,存储将保留筛选出的记录的副本,如果调用了clearFilter
(可能是您或使用存储的组件)它将恢复该副本。如果你想彻底清除这些记录,你必须删除该副本
Ext.create('Ext.data.Store', {
fields: ['name'],
// example data
proxy: {
type: 'memory',
data: [{name: 'Foo'},{name:'Bar'},{a:'Baz'},{a:'Foo'},{a:'Bar'}],
},
listeners: {
load: function(store) {
// using a map of already used names
const hits = {}
store.filterBy(record => {
const name = record.get('name')
if (hits[name]) {
return false
} else {
hits[name] = true
return true
}
})
// delete the filtered out records
delete store.snapshot
},
},
})
您可以在存储中指定
idProperty
值(idProperty==“name”).这是什么版本的Ext?3.4?使用此代码,您到底想实现什么目标?加载存储,然后为局部变量赋值。结果应该是什么?我从www.requesturl.com?format=json&source1获取了数据。但这些数据有重复的价值。我想删除重复的值。然后将其放入Input1存储。这就是我想要的。我不确定这是否是一个很好的解决方案,它会起作用,但在其他属性上再次过滤时会出现问题,并会影响商店上的其他一些操作。也许最好使用Ajax.request加载数据,进行过滤,并只将唯一的值加载到存储中。起初,我想通过覆盖
加载记录
来实现这一点,但我认为这样做会更容易被OP理解。你应该澄清你的第一段来谈论你编辑过的答案。“你的代码是有意义的,只需更好地描述它就行了。@JeffDiederiks啊,好时光。”。在ES3中放置逗号真的没有完美的方法。这就是我今天要做的,太漂亮了!你觉得更好吗?