Javascript ExtJS5如何让keymap调用viewController函数?
我想知道如何从extjs 5中的键映射调用控制器函数? 视图中的以下代码用于将密钥绑定到匿名函数,而不是控制器函数。该功能也由按钮调用,并且正在工作。如何正确设置调用控制器函数的作用域Javascript ExtJS5如何让keymap调用viewController函数?,javascript,extjs,extjs-mvc,extjs5,Javascript,Extjs,Extjs Mvc,Extjs5,我想知道如何从extjs 5中的键映射调用控制器函数? 视图中的以下代码用于将密钥绑定到匿名函数,而不是控制器函数。该功能也由按钮调用,并且正在工作。如何正确设置调用控制器函数的作用域 Ext.define("MyApp.view.users.List",{ extend: 'Ext.grid.Panel', alias: 'widget.usersList', controller: 'users-list', listeners: { scop
Ext.define("MyApp.view.users.List",{
extend: 'Ext.grid.Panel',
alias: 'widget.usersList',
controller: 'users-list',
listeners: {
scope: 'controller',
afterrender: function(window, options) {
this.keyNav = new Ext.util.KeyMap ({
target:window.el,
binding: [
{key:"s", ctrl:true, fn: function(){alert("hallo shortkey");}},
{key:"c", ctrl:true, fn: "newUserFn"},
],
scope:'controller'
});
}
},
tbar: [
{
itemId: 'users-list-btn-new',
iconCls: 'icon-add',
text: 'New User',
handler: 'newUserFn'
}
]
});
我在按键事件中也遇到过类似的问题。我没有像您那样使用KeyMap,但事件逻辑仍然是相关的 以下假设控制器具有要调用的方法“saveNewComponent”。必须触发视图中正在侦听的视图事件“callSave”,才能正确转发到控制器
Ext.define('teams.view.component.FormPanel', {
extend: 'Ext.form.Panel',
controller: "FormPanelController",
listeners: {
callSave: "saveNewComponent"
},
beforeShow: function(){
var me = this;
me.body.dom.addEventListener("keydown", Ext.bind(onKeyDown, this), false);
function onKeyDown(e) {
//Listen for Ctrl+S
if (e.ctrlKey && e.which === 83){
e.preventDefault();
me.fireEvent("callSave");
return false;
}
}
},
....
}
我尝试了很多方法来实现这一点,这个解决方案是唯一一个在控制器内部具有正确上下文的解决方案(即这个var是正确的)