Extjs4 和将函数绑定到 GridPanel 中的事件

发布于 2024-11-14 20:08:35 字数 948 浏览 2 评论 0原文

我是 Extjs 库的新手,我不知道如何向 GridPanel 中的某些事件添加侦听器。当我异步填充网格时,我希望当我们向网格面板添加新元素时执行我的函数。

我发现(我认为)正确的事件:

added( Ext.Component this, Ext.container.Container container, Number pos )

但我找不到放置侦听器的正确位置,因为此函数仅在页面加载时执行一次:

Ext.define('MyApp.NewsGrid', {
  extend: 'Ext.grid.GridPanel',
  alias: 'widget.newsgrid',
  initComponent: function() {
    Ext.apply(this, {
      title: 'News',
      store: newsStore,
      viewConfig: {
        plugins: [{
          pluginId: 'preview',
          ptype: 'preview',
          bodyField: 'testo',
          expanded: false 
        }],
        listeners: {
          add: function() {
            alert("add executed");
          },
          added: function() {
            alert("added executed");
          }
        }
      },
 ....

问题是添加侦听器的方法有不同(在 viewConfig 哈希内部和外部,内部和外部组件定义等...),我无法找出在这种情况下有效的一个。更令人沮丧的是,互联网上有很多地方都有版本 3 的文档,甚至没有指定版本。

I'm new to Extjs library and I cannot figure out how to add listener to some events in GridPanel. As I'm filling the grid asynchronously I want my function to be executed when we add new element to grid panel.

I found (I think) correct event:

added( Ext.Component this, Ext.container.Container container, Number pos )

but I cannot find a correct place to put the listener as this function is executed only once on the page load:

Ext.define('MyApp.NewsGrid', {
  extend: 'Ext.grid.GridPanel',
  alias: 'widget.newsgrid',
  initComponent: function() {
    Ext.apply(this, {
      title: 'News',
      store: newsStore,
      viewConfig: {
        plugins: [{
          pluginId: 'preview',
          ptype: 'preview',
          bodyField: 'testo',
          expanded: false 
        }],
        listeners: {
          add: function() {
            alert("add executed");
          },
          added: function() {
            alert("added executed");
          }
        }
      },
 ....

The problem is that there are different ways to add listeners (inside and outside viewConfig hash, inside and outside component definition etc...) and I cannot figure out one that works in this case. What makes it even more frustrating is that there are many places in the internet with documentation for version 3 or even without specifying the version.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

依 靠 2024-11-21 20:08:35

您应该听 add 商店活动:

initComponent: function() {
    // somewhere inside initComponent...
    this.getStore().on("add", function(store, records) {
        alert(records.length + " records added");
    }, this);
}

You should listen the add event of Store:

initComponent: function() {
    // somewhere inside initComponent...
    this.getStore().on("add", function(store, records) {
        alert(records.length + " records added");
    }, this);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文