【问题标题】:Extjs 5.1: method in a ViewController not invokedExtjs 5.1:未调用 ViewController 中的方法
【发布时间】:2015-01-16 15:00:45
【问题描述】:

我正在使用 Extjs 5.1,我想在 ViewController 中调用一个方法 这是我的观点:

Ext.define("bdociTabletProto.view.main.Main", {
extend: "Ext.container.Container",
requires: ['bdociTabletProto.view.main.MainController'],
controller: "mainController",

initComponent: function () {
    var me = this;
    me.layout = "border";
    ....
    me.items = [...];
    me.listeners = {
        afterlayout: 'onMainAfterLayout',
        scope: 'controller'
    };
    me.callParent(arguments);
}
});

这是我实现 onMainAfterLayout 方法的 ViewController:

Ext.define("bdociTabletProto.view.main.MainController", {
extend: 'Ext.app.ViewController',
alias: 'controller.mainController',

onMainAfterLayout: function (container) {
    var me = this;
    var docNavigator = me.getView().docNavigator;
    var workflowActions = me.getView().workflowActions;
    docNavigator.setHeight(container.getHeight());
    docNavigator.setWidth(container.getWidth() / 4);
    workflowActions.setPosition((container.getWidth() - workflowActions.getWidth()) / 2, 0);
}
});

这会引发异常:[E] Ext.util.Event.getFireInfo(): Unable to dynamic resolve scope for "afterlayout" listener on ext-comp-1010

第一次写了没有作用域的监听器,但是google了一下问题,发现在新版本的Extjs(5.1)中应该设置Scope属性。

不设置scope属性,报错如下:Uncaught Error: No method named "onMainAfterLayout" on bdociTabletProto.view.main.Main

有人可以帮帮我吗? 谢谢

【问题讨论】:

    标签: javascript viewcontroller extjs5 listeners


    【解决方案1】:

    我找到了解决办法:

    • 在 ViewController 中添加这个

      control: { '#': { afterlayout: 'onMainAfterLayout' } },

    • 从视图中移除监听器

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 2016-01-17
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多