无法捕获选项卡更改事件
Fail to catch tab change event
我正在使用按钮在选项卡之间移动。但为此我必须记住用户的标签位置。所以当用户离开屏幕时我的按钮继续工作,returns 之后。
tabchange 事件应该是为此使用的事件,但我无法触发它。
查看:
Ext.define('MyApp1.view.Home',
{
extend: 'Ext.form.Panel',
requires:
[
'Ext.tab.Panel'
],
xtype: 'home',
config:
{
itemId: 'home',
layout: 'fit',
items:
{
xtype: 'tabpanel',
tabBarPosition: 'top',
height: 500,
renderTo: document.body,
listeners:
{
beforetabchange: function (tabs, newTab, oldTab)
{
console.log('tab is going to change');
},
tabchange: function ()
{
console.log('recorded tab change from listener');
},
change: function ()
{
console.log('change of tab from listener');
}
},
items:
[
{
title: 'one'
},
{
title: 'two'
}
]
}
}
});
控制器:
Ext.define('MyApp1.controller.HomeController',
{
extend: 'Ext.app.Controller',
requires:
[
'MyApp1.view.Main'
],
config:
{
refs:
{
home: 'home'
},
control:
{
home:
{
beforetabchange: 'onTabChange',
tabchange: 'onTabChange',
change: 'onTabChange'
}
}
},
init: function()
{
console.log('HomeController initialized');
},
onTabChange: function ()
{
console.log('active tab changed');
}
});
所以我在日志中看到了初始化文本,但是当我单击选项卡按钮时没有任何选项卡更改事件。
原来我在看 ExtJs 5 文档,而不是 Sencha 2.4.1 文档...
只有 'activeitemchange' 事件。
首先,您似乎只能在 tabPanel
的 tabBar
上实现这些侦听器
查看了源代码,虽然它似乎永远不会被解雇,即使它被记录在案。 http://docs-origin.sencha.com/touch/2.4/2.4.1-apidocs/source/Bar3.html#Ext-tab-Bar-event-tabchange
我可以建议的是,正如您指出的挂钩到面板上的 activeitemchange
事件或 tabbar
的 activetabchange
(奇怪的是触发了两次)事件作为activeitemchange
似乎也没有按预期工作。
我正在使用按钮在选项卡之间移动。但为此我必须记住用户的标签位置。所以当用户离开屏幕时我的按钮继续工作,returns 之后。
tabchange 事件应该是为此使用的事件,但我无法触发它。
查看:
Ext.define('MyApp1.view.Home',
{
extend: 'Ext.form.Panel',
requires:
[
'Ext.tab.Panel'
],
xtype: 'home',
config:
{
itemId: 'home',
layout: 'fit',
items:
{
xtype: 'tabpanel',
tabBarPosition: 'top',
height: 500,
renderTo: document.body,
listeners:
{
beforetabchange: function (tabs, newTab, oldTab)
{
console.log('tab is going to change');
},
tabchange: function ()
{
console.log('recorded tab change from listener');
},
change: function ()
{
console.log('change of tab from listener');
}
},
items:
[
{
title: 'one'
},
{
title: 'two'
}
]
}
}
});
控制器:
Ext.define('MyApp1.controller.HomeController',
{
extend: 'Ext.app.Controller',
requires:
[
'MyApp1.view.Main'
],
config:
{
refs:
{
home: 'home'
},
control:
{
home:
{
beforetabchange: 'onTabChange',
tabchange: 'onTabChange',
change: 'onTabChange'
}
}
},
init: function()
{
console.log('HomeController initialized');
},
onTabChange: function ()
{
console.log('active tab changed');
}
});
所以我在日志中看到了初始化文本,但是当我单击选项卡按钮时没有任何选项卡更改事件。
原来我在看 ExtJs 5 文档,而不是 Sencha 2.4.1 文档... 只有 'activeitemchange' 事件。
首先,您似乎只能在 tabPanel
tabBar
上实现这些侦听器
查看了源代码,虽然它似乎永远不会被解雇,即使它被记录在案。 http://docs-origin.sencha.com/touch/2.4/2.4.1-apidocs/source/Bar3.html#Ext-tab-Bar-event-tabchange
我可以建议的是,正如您指出的挂钩到面板上的 activeitemchange
事件或 tabbar
的 activetabchange
(奇怪的是触发了两次)事件作为activeitemchange
似乎也没有按预期工作。