// 列表类定义 Ipms.GridPanel = function(){ this.selections = new Ext.grid.RowSelectionModel(); // 组件定义 this.toolBar = new Ipms.ToolBar(); // buttons组定义 this._onSelectionChange = function(){ this.name; // 注意:this指向selections,而不是GridPanel // do something.. }; // 为组件绑定事件 this.selections.on('selectionchange', this._onSelectionChange); };
虽然方法是在类GridPanel内部定义的,但是他是绑定给了selections,所以在方法内部的this会指向后者而不是前者。
因为selectionchange事件的接口已经固定了,我们不能修改,所以给自定义的方法_onSelectionChange 传递参数的一个办法就是给对象selections提前绑定属性,如下:
// 列表类定义 Ipms.GridPanel = function(){ this.selections = new Ext.grid.RowSelectionModel(); // 组件定义 this.toolBar = new Ipms.ToolBar(); // buttons组定义 this.selections._toolBar = this.toolBar; // 传递参数 this._onSelectionChange = function(){ this._toolBar; // 注意:this指向selections,而不是GridPanel // do something.. }; // 为组件绑定事件 this.selections.on('selectionchange', this._onSelectionChange); };
或者是给_onSelectionChange方法绑定作用域,略。