【问题标题】:How to run conroller methods within a event in Ext JS 4.2 (Sencha Architect)如何在 Ext JS 4.2 (Sencha Architect) 的事件中运行控制器方法
【发布时间】:2013-08-01 14:05:08
【问题描述】:

我在 Architect 中有以下结构。

包含视图的控​​制器(例如 MyPanelView)

在 MyPanelView 中,你可以有一个按钮,并给它一个 itemId。那么你就可以 将其绑定到单击事件。您可以在没有控制器的情况下使用点击事件(内联), 或者您可以将事件移动到控制器。效果很好。

但是这些事件呢? afterrender, beforerender 等等..?如果你把它移到 控制器,事件不会在那里被触发。

既然这不起作用,我怎么能访问其中的控制器方法 面板的后渲染功能?

onAfterrenderMyPanelView : function(component, eOpts) {
   this.getRefToOtherPanel() //not working
}

提前致谢!我迷路了。。

克里斯。

【问题讨论】:

  • 没有“特殊”事件,控制器会拾取任何东西。两个最常见的原因是事件在您调用 control() 之前已触发,或者您的事件选择器不匹配。
  • 谢谢,就是这样。事件在 control() 之前被触发

标签: extjs sencha-architect extjs4.2


【解决方案1】:

您可以像这样在控制器中设置侦听器和事件处理程序(示例来自 Sencha 文档):

 Ext.define('MyApp.controller.Users', {
     extend: 'Ext.app.Controller',

     init: function() {
         this.control({
             'viewport > panel': { //<-- ComponentQuery
                 render: this.onPanelRendered //<-- event handler
             }
         });
     },

     onPanelRendered: function() {
         console.log('The panel was rendered');
     }
 });

【讨论】:

  • 感谢您的意见,这正是我所做的。我使用的事件发生在 this.control() 之前..所以它无法被捕获。
猜你喜欢
  • 2013-03-20
  • 1970-01-01
  • 2013-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多