gpt4 book ai didi

javascript - 在 ExtJS 5.1 中触发自定义事件

转载 作者:行者123 更新时间:2023-11-30 16:41:16 25 4
gpt4 key购买 nike

我一直在尝试在使用模式窗口成功上传文件时触发自定义事件。主页上的网格会监听该事件,并应在文件成功上传后重新加载其存储。问题是,网格永远不会捕获此事件。

我认为我对自定义事件的工作原理存在根本性的误解。我应该采取哪些步骤才能重回正轨?

一些CommonUtilityClass.js

upload: function(args) {
Ext.create('Ext.window.Window', {

/* form with some controls */
buttons: [{
text:'Upload',
handler: function() {
var win = this.up('window');
var form = this.up('form').getForm();
form.submit ({
url: myAjaxCall,
success: function() {
/* fire event here */
win.fireEvent('uploadSuccess');
},
failure: function() {
/*...*/
}
});
}
},
/* etc. */
});
}

SomeOtherFileView.js

{
xtype:'grid',
itemId:'uploadedGrid',
listeners: {
uploadSuccess: 'reloadUploadStore'
},
bind: {
store:'{form}'
},
columns:[/*...*/]
}

SomeOtherFileViewController.js

reloadUploadStore: function() {

console.log("My event fired!") // Never gets here.
/* .... */
store.load({
params: ({
a: "a",
b: "b"
});
callback: function() {
/* do more stuff */
}
});
}

最佳答案

一些CommonUtilityClass

win.fireEvent('uploadSuccess');

自定义事件和监听它的 Controller 的例子:

SomeOtherFileViewController

init: function() {
this.listen({
// We are using Controller event domain here
controller: {
// This selector matches any originating Controller
'*': {
uploadSuccess: 'reloadUploadStore'
}
}
});
},
reloadUploadStore: function() {
//your code
}

或者如果你想传递一个参数:

win.fireEvent('uploadSuccess',extraArgument);

Controller 代码相同。只有你的函数定义改变了:

reloadUploadStore: function(yourArgument) {
//Do your stuff with extraArgument
}

关于javascript - 在 ExtJS 5.1 中触发自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com