我正在使用设计器我的目标是通过单击newBtn来更新到目前为止已启动的商店记录。我试图在调用它的函数之外做它。
如果我尝试点击按钮就可以了。
./的application.js
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
name: 'MyApp',
stores: [
'MyArrayStore'
],
launch: function() {
Ext.QuickTips.init();
var cmp1 = Ext.create('MyApp.view.TradeGrid', {
renderTo: Ext.getBody()
});
cmp1.show();
//PROBLEM HERE
// This actually does something but when maxIndex is printed to the console it = 0
// Meaning that no data has been loaded to grid
// Am I wrong thinking it should? As the other file loads two data cells right away
cmp1.addRecord([]);
//PROBLEM HERE
./ TradeGrid.js
Ext.define('MyApp.view.TradeGrid', {
extend: 'MyApp.view.ui.TradeGrid',
initComponent: function() {
var me = this;
me.callParent(arguments);
var button = me.down('button[text=newBtn]');
button.on('click', me.onSubmitBtnClick, me);
},
addRecord: function(myRecordArray) {
var grid = Ext.getCmp("TradeGrid"); //defined by -> Property: id
var store = grid.getStore();
var maxIndex = store.getCount();
console.log(maxIndex); //maxIndex PRINT to CONSOLE
var res = store.insert(maxIndex, [["ll", "kk", "00"]]);
console.log(this);
},
onSubmitBtnClick: function() {
this.addRecord([]);
}
});
}
});
前两个数据加载到网格
[
["Ace Supplies", "Emma Knauer", "555-3529"],
["Best Goods", "Joseph Kahn", "555-8797"],
]
答案 0 :(得分:1)
我看到你使用Ext.getCmp获得网格引用 - 这意味着你硬编码了组件的id。这不是一个好主意,你最好尝试使用itemId。它可能导致一些奇怪的错误,也许这是你可能无法工作的原因。尝试将id更改为itemId。