我想请教您一个问题就是关Store的,我有两个store,一个是A,另外一个是B,A和B用的是同一个model,A里面的数据比B少,B中包含A的全部,我现在是想利用A去删除B中和A相同的数据,我试过
      B。remove(A。data)
      B。remove(A。getProxy()。getModel())
      B。data。remove(A。getProxy()。getModel())
      B。data。remove(A。data)但一直都删不到,请问该如何去删呢

解决方案 »

  1.   


    你意思是我的想法使用的人少还是EXTJS4使用的人太少了,会的话请告诉我啊
      

  2.   

    利用A去删除B中和A相同的数据
    A和B循环比较,记住B相同位置的索引,然后删除B的数据
      

  3.   


    我试过啦,就是不行,你看我上面说的
      B。remove(A。data)
      B。remove(A。getProxy()。getModel())
      B。data。remove(A。getProxy()。getModel())
      B。data。remove(A。data),我全部是这样的
    A.each(function(model){
      B。remove(model)
      B。remove(A。getProxy()。getModel())
      B。data。remove(A。getProxy()。getModel())
      B。data。remove(A。data),
    }
    都不行啊
      

  4.   

    model是同一个,数据对象不是同一个吧。就像类对象一样,属性值相同,但是对象还不是同一个吧。
    循环比较吧。获取对象,删除对象。
      

  5.   

    可以不要只是理论上的东西呢?请上点代码吗,
    我有点懂你的意思,你意思是我创建model是同一个但在使用model的时候定义的对象是不一样,所以导致不能删到是吗,我创建model如下Ext.define('testmodel',
    extend:'Ext.data.model'
    //field是一样的所以省略
    });
    var AStore = Ext.create('Ext.data.Store', {
    model : 'testmodel'
    });var BStore = Ext.create('Ext.data.Store', {
    model : 'testmodel'
    });
    这样的A、B中的model是一样的吧,但这样却删除不了B中包含有A的数据,数据是用正规的json数据传进来的,A,B中的数据是有的
      

  6.   

     function person(id,name){
    this.id = id;
    this.name = name;
    return this;
     }
         var arr1 = [];
     var arr2 = [];
     
        arr1.push(new person(1,"张三"));
    arr1.push(new person(2,"李四"));

    arr2.push(new person(1,"张三"));
    arr2.push(new person(2,"李四"));
    arr2.push(new person(3,"王五")); 

    //删除arr2中arr1的数据,根据主健id判断
    for(var i = 0 ; i  < arr1.length;i++){
    for(var x = arr2.length-1 ; x >=0 ; x--){
    if(arr1[i].id == arr2[x].id){
    arr2.splice(x,1); 
    break;
    }
    }
    }
    类似这样吧。
      

  7.   


    这个办法是可行,但这样需要的迭代次数非常大啊,假设arr1中有10条数据,arr2 中有20条数据,那就需要迭代200次,再者真的系统不会只有这么少数据,所以这样会导致系统很慢很慢 
      

  8.   

    为什么我这样删不行呢?
    A.each(function(model){
      B。remove(model)

      

  9.   

    A.each 时候,model是A的对象啊。B怎么能删除呢。
      

  10.   

    B.each(function(b) {
        A.each(function(a) {
            if (a.getId() === b.getId()) {
                B.remove(b);
                return false;
            }
        });
    });