В настоящее время я работаю с extjs 3.4 и сталкиваюсь со следующей проблемой. Я создаю GridPanel в конструкции. Я устанавливаю имя переменной с именем «bla» со значением «test2» после того, как я установил этот атрибут, я предупреждаю его, чтобы убедиться, что он установлен правильно. Это работает !. Однако, когда на моей панели сетки была нажата кнопка, он больше не может читать атрибут bla и говорит, что он «undefined».
Я пропустил части кода, которые не имеют смысла в вопросе;)
См. Код ниже
Ext.define('SC.view.WorkOrderHourGrid' ,{
extend: 'Ext.grid.GridPanel',
bla:"test",
tbar: null,
store:null,
plugins:null,
//Methods
constructor:function(p_Store,config){
this.tbar = this.buildTbar();
this.bla = " test2";
this.store = p_Store;
//alerting bla attribute outputs test 2 !!
alert(this.bla);
var rowEditor = new Ext.ux.grid.RowEditor({
saveText: 'Update'
});
this.plugins = [rowEditor];
SC.view.WorkOrderHourGrid.superclass.constructor.call(this,config);
},
buildTbar:function()
{
return [{
text: 'Toevoegen',
handler: function(){
tryOut();
},
//the button i was talking about
handler:this.onAdd
}];
},
onAdd:function(btn, ev)
{
//this outputs undefined !!!
alert(this.bla);
}
});
1 ответ
Область действия функции onAdd - это кнопка. Поэтому bla не определено.
Попробуйте изменить функцию buildTbar следующим образом:
buildTbar:function()
{
return [{
text: 'Toevoegen',
scope: this,
//the button i was talking about
handler:this.onAdd
}];
},
Я не тестировал! :)
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
this.refOwner.bla
или попробуйте найти этот компонент по идентификатору