解决找不到me的处理方式,另外一种方式
找不到对象me
以前的处理方式是,利用apply函数,将其放到其作用域中,然后能获取到作用域内的me变量。
定义upper
下面是另外一种方式,来为store这种对象增加upper属性,并指向当前的me对象。然后使其能获取到me对象。
afterrender: function (cmp, eOpts) {
var me = this;
var height = me.getHeight();
var margin = (height - 150 - 200 * 2) / 4;
if (margin > 50 || margin < 0) { //超出边界
margin = margin > 50 ? 50 : 0;
}
me.dvMargin = margin;
var dv = me.down('dataview');
Ext.apply(dv.store, {//注意,在这里为其增加一个属性upper
upper: me
});
}
使用upper
下面是store的一个listeners,然后cmp拥有upper这个属性,获取到me对象。顺利的传递了upper属性。
listeners: {
'load': function (cmp, records, successful, operation, eOpts) {
var me = cmp.upper;
var margin = me.dvMargin;
Ext.each(records, function (rd) {
rd.set({
margin: margin
});
rd.commit();
});
}
}
说明
这个其实是之前,突发奇想,然后发现可以利用这种对象属性的方式,来传递变量,关键的属性等。这样,新增的属性即获取到了特定的对象。像store这样的组件,没有up函数,很难找到me变量。
更改
store这样的组件应该能获取到该组建绑定的组件的能力。这样更具有一般性。