将params传递给loadData()以覆盖viewCconfig方法-EXTJS中的emptyText prop

时间:2016-06-17 00:49:57

标签: javascript extjs

除非我检查某些条件,否则我想加载没有记录的商店。但是我希望将params传递给我的loadData(),以便我可以用其他文本覆盖emptyText属性。

    this.superclass.constructor.call(this, Ext.apply({
            viewConfig:{
              emptyText: "No Records"
             },
            fields: [],
      });

    this.on('afterrender', function(){
        new Ext.util.DelayedTask(function() {
          this.getStore().loadData([]); //loading empty data
        }, this).delay(300);
    }, this);

所以当我加载商店时,我想要替换emptyText: "Select actions"一旦选择了动作,它将显示记录或根据数据不显示记录。

如果我插入"选择操作'在viewConfig上面的文本,它在页面加载时工作正常,但是当没有找到记录时,它仍然显示"选择动作"。是否有任何方式我将params传递给loadData()函数来覆盖文本? 谢谢!

2 个答案:

答案 0 :(得分:2)

虽然@ Saloo的示例有效,但让我告诉您面向对象可以为您做什么。

如果您不想一遍又一遍地复制代码,在每个loadData后面,您可以在商店定义中覆盖现有的loadData函数以添加另一个参数,例如:

loadData:function(data, append, emptyText) {
    if(emptyText) {
        grid.emptyText = '<b> ' + emptyText + ' </b>';
        grid.getView().refresh();
    }
    this.callParent(arguments);
}

然后你去。

答案 1 :(得分:1)

loadData()方法不接受任何参数。

loadData( data, [append] )

您必须处理任何其他事件,例如选择组合,然后根据您的条件手动更改viewConfig emptyText,然后刷新视图。

我在网格组件上做了这样的事情:

if (Ext.isEmpty(records)) {
        grid.emptyText = '<b> No Document Found </b>';
        grid.getView().refresh();
   }