Javascript 如何在extjs中验证itemselecter的drop事件数据?

Javascript 如何在extjs中验证itemselecter的drop事件数据?,javascript,extjs,extjs3,Javascript,Extjs,Extjs3,我们不希望在所选项目中再次添加三个单词。 我们希望对拖放事件进行验证,并需要显示您已添加此记录的消息。 我尝试使用下面的代码,但无法对相关事件进行验证 listeners: { added:function(obj,event){ console.log("added"); },change:function(obj,event){ console.log("ch

我们不希望在所选项目中再次添加三个单词。 我们希望对拖放事件进行验证,并需要显示您已添加此记录的消息。
我尝试使用下面的代码,但无法对相关事件进行验证

listeners: {
            added:function(obj,event){  
                  console.log("added");  
             },change:function(obj,event){  
                  console.log("change");  
             },removed:function(obj,event){  
                  console.log("removed");  
             }, blur:function(obj,event){  
                  console.log("blur");  
             }, click: function( obj) {  
                  console.log('click');   
             }, select: function( obj) {  
                   console.log('select');   
             }  
   }
请参阅下面所附的图片

我使用的是Extjs 3.4

当选择或取消选择某个项目时会触发事件。。。但在这个阶段,你将无法再阻止它了。因此,显然,您最好的做法是覆盖该方法:

{
xtype:'itemselector'
//…配置
,onAddBtnClick:function(){
var me=这个,
selected=me.getSelections(me.fromField.boundList),
i、 l、记录;
var toStore=this.toField.boundList.getStore(),
idField='value'、//或'id',或您想要的任何内容
选择edids=Ext.pull(Ext.pull(toStore.getRange(),'data'),idField),
接受=[],拒绝=[];

对于(i=0,l=selected.length;i如果您不想让它被选中两次,为什么要在可用项中提供两次?因为有两种不同的列表方法调用。我们不知道较早选择了哪个项如果我是您,我会过滤可供选择的项,以避免重复,而不是阻止用户选择当然,我的意思是你应该说明你正在使用的版本,特别是如果它不是Sencha发布的最后一个版本的话。
{
    xtype: 'itemselector'

    // ... config

    ,onAddBtnClick: function() {
        var me = this,
            selected = me.getSelections(me.fromField.boundList),
            i, l, record;

        var toStore = this.toField.boundList.getStore(),
            idField = 'value', // or 'id', or whatever you want
            selectedIds = Ext.pluck(Ext.pluck(toStore.getRange(), 'data'), idField),
            accepted = [], rejected = [];

        for (i=0, l=selected.length; i<l; i++) {
            record = selected[i];
            if (selectedIds.indexOf(record.get(idField)) === -1) {
                accepted.push(record);
            } else {
                rejected.push(record);
            }
        }

        if (rejected.length) {
            // warning msg
        }

        me.moveRec(true, accepted);
        me.toField.boundList.getSelectionModel().select(accepted);
    }
}