我正在阅读Declarative Listeners documentation(来自this thread's answer),我对此感到非常困惑。文档说明:
另一方面,实例级侦听器跳过组件和 从层次结构开始向上解析为ViewController 父容器。
举例:
Ext.define('MyApp.view.main.Main', {
extend: 'Ext.container.Container',
controller: 'main',
items: [
{
xtype: 'user',
listeners: {
remove: 'onUserRemove'
}
}
]
});
Ext.define('MyApp.view.main.MainController', {
extend: 'Ext.app.ViewController',
alias: 'controller.main',
onUserRemove: function() {
console.log('user removed');
}
});
这告诉我用户类有自己的控制器,但附加到它的监听器(在主视图类中)将被解析为主视图的控制器。太好了,这很有道理。然而,没有意义的是,如果你向这个类添加项目,并且其中一个项目上有一个监听器......这个监听器显然试图解析为该类的控制器。
这是一个例子。我有一个SearchPanel类,它有一个ViewModel和一个ViewController。 ViewController控制诸如按下搜索按钮和我希望这个类所需的任何其他逻辑。现在,因为我的SearchPanel是一种基础"我将在我的应用中使用的课程,我无法定义其项目,因为他们会在视图之间有所不同。因此,当我在实例级配置中定义我的项目时,我将拥有其中一些项目的监听器。不幸的是,看起来这些侦听器试图解析为SearchPanel类,这不是我想要的......我希望它们解析为定义类的ViewController。
在我example中,我希望Textfield的听众能够解析为MyView的控制器。如果您在文本字段中输入,您会注意到,控制台中会出现错误。这是一个错误,还是这个设计?如果按照设计进行,我该如何才能使其发挥作用?