我的所有选择字段都有一个奇怪的问题。当我第一次进入视图包含一个在控制器中定义了更改事件侦听器的选择域时,它工作正常。我可以做一个选择,事件将会触发。但是当我进入另一个视图并弹出该视图以便我在视图中返回selectfield时,更改事件不会再触发。选择的值也消失了。我试图在视图中将侦听器添加到配置中,但这根本不起作用?
这更像是我正在做的一个例子。
控制器:
Ext.define('MyApp.controller.Search', {
extend: 'Ext.app.Controller',
config: {
refs:{
distanceSelect:'#distanceSelect',
},
control:{
distanceSelect:{
change:'filterSearchList',
},
}
},
filterSearchList:function(){
alert('42!!');
}
});
查看:
Ext.define('Abedrijven.view.search.Search_main', {
extend:'Abedrijven.view.Screen',
alias:'widget.search_main',
requires:[
'Ext.field.Select',
],
config:{
items:[{
xtype: 'selectfield',
id: 'distanceSelect',
name:'distance',
options: [{
text: '- All -',
value: '0'
}, {
text: '5 Km.',
value: '5'
}, {
text: '10 Km.',
value: '10'
}
}]
}
});
修改
我的app.js中有这个。当我想要更改视图时,我会调用它们。
launch: function() {
// Destroy the #appLoadingIndicator element
Ext.fly('appLoadingIndicator').destroy();
// Initialize the main view
var view = Ext.create('Abedrijven.view.Main');
Ext.Viewport.add(view);
Abedrijven.app.view = view;
Abedrijven.app.pushView = function(xtype,data){
Abedrijven.app.view.push({xtype:xtype,data:data});
}
Abedrijven.app.popView = function(){
Abedrijven.app.view.pop();
},
Abedrijven.app.goHome = function(){
Abedrijven.app.view.reset();
}
Abedrijven.app.view.add({xtype:'home_main'});
},
我的主要观点:
Ext.define("Abedrijven.view.Main", {
extend:'Ext.NavigationView',
requires:[
'Ext.Toolbar',
'Ext.tab.Panel',
'Ext.TitleBar',
],
alias:'widget.main',
id:'mainview',
config:{
cls:['mainview'],
fullscreen: true,
ui:'dark',
items:[
第一次全部工作时,更改为其他视图,然后更改回此视图,并且不会触发更改事件。我正在使用ST 2.0.1.1 GPL。在iOS和浏览器上测试过。
任何帮助都会很棒! 提前谢谢!
答案 0 :(得分:1)
我遇到了同样的问题,因为我在运行时使用了定义和实例化的视图。第一次很好,第二次控制器正在失去听众。
我只是使用dom子查询解决了这个问题。
config:{ refs:{ RecordTypeSelectField:' NewRecordPanel #recordTypeSelectField'
基本上,您只需将父容器添加到查询键即可。这就是全部!
答案 1 :(得分:0)
我发现了这个错误。我使用 id ,但 itemId 更好。 Here the answer that helped me搞清楚这一点。
id:'myid'
替换为
itemId:'myid'
需要更改一些代码以再次获得正确的元素,但现在它可以正常工作