Extjs 5.1:未调用 ViewController 中的方法
Extjs 5.1: method in a ViewController not invoked
我正在使用 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);
}
});
这里是 ViewController 我实现 onMainAfterLayout
方法的地方:
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():无法动态解析 ext-comp-1010"afterlayout" 侦听器的范围
我第一次写的是没有作用域的监听器,但是在搜索问题后,我发现在新版本的Extjs(5.1)中我应该设置作用域属性。
没有设置作用域属性,错误是这样的:Uncaught Error: No method named "onMainAfterLayout" on bdociTabletProto.view.main.Main
谁能帮帮我??
谢谢
我找到了解决方案:
在ViewController
中添加这个
control: {
'#': {
afterlayout: 'onMainAfterLayout'
}
},
从视图中删除侦听器
我正在使用 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);
}
});
这里是 ViewController 我实现 onMainAfterLayout
方法的地方:
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():无法动态解析 ext-comp-1010"afterlayout" 侦听器的范围
我第一次写的是没有作用域的监听器,但是在搜索问题后,我发现在新版本的Extjs(5.1)中我应该设置作用域属性。
没有设置作用域属性,错误是这样的:Uncaught Error: No method named "onMainAfterLayout" on bdociTabletProto.view.main.Main
谁能帮帮我?? 谢谢
我找到了解决方案:
在ViewController
中添加这个control: { '#': { afterlayout: 'onMainAfterLayout' } },
从视图中删除侦听器