我有一个grid.Panel内部绑定到商店的视口。一旦网格(或商店)加载后,我想查看第一行(或任何行)中的值,如果它是假的,则隐藏网格中的列。我已经尝试了许多不同的事件,但在这里,在我的控制器的例子:extjs4 mvc事件调试结果不一致
Ext.define('HelperBatchForm.controller.BatchController', {
extend: 'Ext.app.Controller',
stores: [
'Batches'
],
models: [
'Batch'
],
views: [
'batch.BatchGrid',
'batch.BatchEdit'
],
init: function() {
this.control({
'batchgrid': {
itemdblclick: this.editBatch
,viewready: this.onGridLoad
}
});
},
onGridLoad: function(grid){
stop;
},
“停止”抛出一个错误,在我的IE浏览器中打开调试器。在浏览器本身,我可以看到网格和行,完全呈现。在调试器中,我可以查看grid.store.data.items [0]并查看第一行。所以看起来一切都很好,我应该能够根据隐藏网格的数据在函数中添加条件。但这并不奏效 - 这就是事情变得怪异的地方。
如果我替换“停止”;用“调试器”,并重新加载,这次我们得到了visual studio调试器。但是现在,在IE屏幕上,我只能看到网格标题,而没有任何数据。而grid.store.data.items是一个空数组。我恢复的那一刻,我看到了整个电网。
但这并非全部。如果我的功能是: onGridLoad:function(grid){ alert('onGridLoad'); 调试器; }, 现在,通过加载visual studio调试器,我可以在IE中看到完整的网格和数据。而grid.store.data.items [0]给了我第一行。如果我用条件代码替换“调试器”,它就可以工作!换句话说,我的代码不起作用,但是如果我在它之前抛出alert(),它会突然开始工作。
总之,下面的代码会隐藏列:
onGridLoad: function (grid) {
alert('onGridLoad');
if (grid.store.findExact('is_rcm', false) >= 0) {
grid.columns[6].hide();
}
},
但如果警报已被注释掉,也不会隐藏的列。
任何想法或解释为什么这可能会不胜感激。