Sencha touch 2 在对象创建时添加searchfield键控侦听器?

Sencha touch 2 在对象创建时添加searchfield键控侦听器?,sencha-touch-2,Sencha Touch 2,在另一个问题中,有人解释了如何创建通用搜索 用于嵌套列表的框 如何在创建时向该类添加/设置键控侦听器? 我可以在类上添加侦听器,但我想在几个屏幕上重用这个类 Ext.define('Sencha.view.SearchBar', { extend: 'Ext.Toolbar', xtype : 'searchbar', requires: ['Ext.field.Text', 'Ext.field.Search'], config: { ui:

在另一个问题中,有人解释了如何创建通用搜索 用于嵌套列表的框

如何在创建时向该类添加/设置键控侦听器? 我可以在类上添加侦听器,但我想在几个屏幕上重用这个类

Ext.define('Sencha.view.SearchBar', { extend: 'Ext.Toolbar', xtype : 'searchbar', requires: ['Ext.field.Text', 'Ext.field.Search'], config: { ui: 'searchbar', layout: 'vbox', cls: 'big', items: [ { xtype: 'searchfield', placeHolder: 'Search...', listeners: { scope: this, keyup: function(field) { console.log(field.getValue()); } } } ] } }); Ext.define('Sencha.view.SearchBar'{ 扩展:“Ext.Toolbar”, xtype:'搜索栏', 需要:['Ext.field.Text','Ext.field.Search'], 配置:{ 用户界面:“搜索栏”, 布局:“vbox”, cls:“大”, 项目:[ { xtype:“搜索字段”, 占位符:“搜索…”, 听众:{ 范围:本,, 键控:功能(字段){ log(field.getValue()); } } } ] } }); 此时是否可以将侦听器直接添加到searchfield

var searchBar = nestedList.add({ docked: 'top', xtype: 'searchbar', height: 100 }); var searchBar=nestedList.add({ 停靠:“顶部”, xtype:'搜索栏', 身高:100 }); 我还尝试添加这样的侦听器,但我认为我需要能够直接访问该字段

searchBar.on('keyup', function(field) { console.log("foo..."); console.log(field.getValue()); }, this); 搜索栏打开('keyup',函数(字段){ console.log(“foo…”); log(field.getValue()); },这个); ====================================

[更新] 将委派添加到类:

Ext.define('Sencha.view.SearchBar', { extend: 'Ext.Toolbar', xtype : 'searchbar', requires: ['Ext.field.Text', 'Ext.field.Search'], config: { ui: 'searchbar', layout: 'vbox', cls: 'big', items: [ { xtype: 'searchfield', placeHolder: 'Search...' } ] }, initialize: function() { this.on({ scope: this, delegate: 'searchfield', keyup: 'onSearchFieldKeyUp' }); }, onSearchFieldKeyUp: function(field) { console.log("Base Class"); console.log(field.getValue()); } }); Ext.define('Sencha.view.SearchBar'{ 扩展:“Ext.Toolbar”, xtype:'搜索栏', 需要:['Ext.field.Text','Ext.field.Search'], 配置:{ 用户界面:“搜索栏”, 布局:“vbox”, cls:“大”, 项目:[ { xtype:“搜索字段”, 占位符:“搜索…” } ] }, 初始化:函数(){ 这是我的({ 范围:本,, 代表:“搜索字段”, 键控:“onSearchFieldKeyUp” }); }, onSearchFieldKeyUp:函数(字段){ console.log(“基类”); log(field.getValue()); } }); 接下来用我们自己的方法实例化“searchbar”,以覆盖默认的onSearchFieldKeyUp

var searchBar=this.nestedList.add({ 停靠:“顶部”, xtype:'搜索栏', 身高:75, id:“searchbarId” });
在类中的
initialize
函数中添加侦听器:

initialize: function() {
    this.on({
        scope: this,
        delegate: 'searchbar',
        keyup: 'onSearchFieldKeyUp'
    });
},

onSearchFieldKeyUp: function(field) {
    console.log(field.getValue());
}

注意,我正在使用
delegate
属性将侦听器添加到searchfield组件中(通过
xtype

试试看。是什么阻止你尝试呢?我对Javascript有点陌生。对不起,如果我错过了显而易见的。你是说在高度100之后添加侦听器:{}吗?我来试试……我说的没用。我包括了所有的源代码。我认为我需要直接从items:[]中解决searchfield。为了回答您最初的问题,我认为这是一个Javascript问题,即整天都在更改某些内容,而没有任何关于问题可能是什么的错误消息。我不认为这对SearchBar的每个实例都有什么帮助。在上面也找不到任何Sencha文档。这是你答案的错别字,对吗?我没有错过什么?onSearchFieldKeyUp!=onSearchKeyFieldKeyUp。本机代码中的委托用于回调。我看不到在给定实例上设置回调的位置;那是一个打字错误(已修复)。代理还应该是
搜索栏
(您的xtype)
delegate
在本例中,这意味着它将向该委托添加侦听器,该委托可以是ComponentQuery。在我的问题中,我在更新时添加了您的更改。我仍然没有得到我应该做的,所以我得到了某种授权。我在困惑的地方加了黑体字。有些东西应该重写我最初的“基类”方法,并将控制权委托给每个实例化?在
onSearchFieldKeyUp
中触发keyup事件<代码>this.firevent('keyup',this,field.getValue())-然后您可以将侦听器添加到该事件的实例中。
initialize: function() {
    this.on({
        scope: this,
        delegate: 'searchbar',
        keyup: 'onSearchFieldKeyUp'
    });
},

onSearchFieldKeyUp: function(field) {
    console.log(field.getValue());
}