var aid = -1;
grid.on('rowcontextmenu',function(grid,rowIndex,e){
var record = grid.getStore().getAt(rowIndex);
e.preventDefault();
grid.getSelectionModel().selectRow(rowIndex);
contextmenu.showAt(e.getXY());
var id = record.get('id');
                                        //已知record.get('id')的值是存在的,为什么aid的值还是没有改变?
this.aid = id;
                                        alert(aid);//这里的值也是 -1
});

解决方案 »

  1.   

    你是用的jQuery?
    你贴的代码中的:
    this.aid = id; //这里的this指向的是绑定“rowcontextmenu”事件后对应的dom 结点,因此给this.id赋值并不会修改第一行的定义的aid变量值因此:
    alert(aid);//这里的aid相当于全局变量,即相当window.aid
      

  2.   

    匿名函数里,this好像是指向window.
      

  3.   

    this.aid
    和 aid
    不一定是一个对象this.xxx 指在 当前 this对象下面的 xxx
    xxx 指当前代码 可以见范围内的 xxx这2个 重叠的唯一机会就是  this=window 可见范围在window中
      

  4.   

    var aid = -1;
                    grid.on('rowcontextmenu',function(grid,rowIndex,e){
                        var record = grid.getStore().getAt(rowIndex);
                        e.preventDefault();
                        grid.getSelectionModel().selectRow(rowIndex);
                        contextmenu.showAt(e.getXY());
                        var id = record.get('id');
                        setVal();
                    });
                   function setVal(){this.aid = id;}//这样就可以了