我有两个 ViewController。如果我在树形面板中选择一个项目,第一个会触发一个事件:
// treeController
onItemSelection: function(treeview, record) {
var me = this,
controller = me.getView().getController();
...
controller.fireEvent('myEvent', record);
}
第二个是听这个事件。控制器负责将文件上传到指定的 url。此 url 由 onMyEvent 函数设置。
// uploadController
...
listen: {
controller: {
'*': {
myEvent: 'onMyEvent'
}
}
},
defaultUrl: 'foo/bar/{id}',
currentUrl: null,
onMyEvent: function(record) {
var me = this;
me.currentUrl = me.defaultUrl.replace('{id}', record.getId());
},
onUploadClick: function (form) {
var me = this;
if (form.isValid()) {
form.submit({
url: me.currentUrl,
...
});
}
},
...
我想要实现的目标:我在树面板中选择一个项目-> 事件被触发,onMyEvent 函数已被执行。
我单击按钮打开uploadView(连接到控制器的视图)。之后,我将单击文件上传按钮,选择一个文件并单击上传按钮。按下上传按钮后,控制器应调用 onUploadClick 函数并使用之前放置的 url (currentUrl) 进行上传。
我面临的问题:
在树形面板中选择一个项目会触发事件,但 uploadController 没有执行 onMyEvent 函数。当我首先打开uploadView 然后在面板中选择一个节点时,会执行onMyEvent 函数。
当我使用第二种方法并尝试上传文件时,我收到一个错误,告诉我我没有指定 url(它的 null)。
如何在不使用上述解决方法 1. 的情况下完成该过程?
提前致谢。