无法在extjs中访问this.myvar
Cannot acces this.myvar in extjs
我正在向ExtJs网格动态添加额外的列,因此我将索引存储为类变量。但这似乎确实有效,如下所示。为什么会这样?
for ( var i = 0; i < names.length; i++) {
var column = Ext.create('Ext.grid.column.Column', {
text : names[i],
header : names[i],
width : 80,
dIndx: i,
renderer: function (val, p, record) {
var value = record.data.values[this.dIndx]; // doesn't work
var value = record.data.values[p.column.dIndx]; // this works
return value ? value : "";
}
});
// add column to grid etc.
我认为this
是控制器Ext.grid.Panel
的作用域(如果没有另行定义,请参阅编辑),这就是为什么它不能使用关键字工作的原因。无论如何,第二个是更好的解决方案IMO
编辑:
正如@kevhender所评论的,可以为渲染器定义一个范围。但当你使用其中一个论点时,这毫无意义。不管怎么说,我没有提到它。
编辑2-为什么默认作用域是Ext.grid.Panel
:
这是处理渲染的函数的一个片段。该方法是私有的,因此未在API中列出。无论如何,这是源链接。请注意,使用给定的作用域或所有者容器column.renderer.call(column.scope || me.ownerCt,//...
的作用域调用渲染器,视图的所有者是它嵌套到其中的面板。
/**
* @private
* Emits the HTML representing a single grid cell into the passed output stream (which is an array of strings).
*
* @param {Ext.grid.column.Column} column The column definition for which to render a cell.
* @param {Number} recordIndex The row index (zero based within the {@link #store}) for which to render the cell.
* @param {Number} columnIndex The column index (zero based) for which to render the cell.
* @param {String[]} out The output stream into which the HTML strings are appended.
*/
renderCell: function(column, record, recordIndex, columnIndex, out) {
//... more code
if (column.renderer && column.renderer.call) {
value = column.renderer.call(column.scope || me.ownerCt, fieldValue, cellValues, record, recordIndex, columnIndex, me.dataSource, me);
if (cellValues.css) {
// This warning attribute is used by the compat layer
// TODO: remove when compat layer becomes deprecated
record.cssWarning = true;
cellValues.tdCls += ' ' + cellValues.css;
delete cellValues.css;
}
}
// ... more code
相关文章:
- 为什么我不能在 ajax 成功中访问 $(this)
- 在jQuery中,我如何从$.ajax回调函数访问$(this)
- React Native can'无法在render()方法之外访问this.ops
- 通过函数传递“this”时,我是否可以无法访问“this”的属性
- 在 JavaScript 中的异步回调函数中访问“this”
- 在 HTTP 错误回调中访问“this”
- jQuery - 如何在 jquery 中访问 “this.options” dataSousrce 属性
- 在jQuery的.on()数据对象中访问$(this)
- 全局范围 - 在触发事件侦听器后访问“this”
- 从原型中的事件访问“this”
- Javascript原型和访问“this”的父对象
- Backbone/Javascript scope.如何在 .each 中访问 this.el
- 从其他函数访问“this”类型的JavaScript变量
- 反应:如何访问this.props.children中的参考文献
- 当我使用一个方法作为回调时,它似乎无法访问“this”.为什么?
- 为什么可以't我在对象文字中访问this.properties
- 为什么可以't我在箭头函数中访问“this”
- 无法在extjs中访问this.myvar
- 为什么不是在 JavaScript 中匿名函数之外访问“this”对象的关键字
- 如何访问“this”;对象