すべての選択フィールドに奇妙な問題があります。コントローラーで変更イベントリスナーが定義されたselectfieldを含むビューに初めて入ると、正常に動作します。選択を行うことができ、イベントが発生します。しかし、別のビューに入ってそのビューをポップすると、selectfield を使用してビューに戻ると、change イベントは発生しなくなります。また、選択した値はなくなりました。ビューの構成にリスナーを追加しようとしましたが、まったく機能しませんか?
これは、私がやっていることの多かれ少なかれ例です。
コントローラ:
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 とブラウザでテスト済み。
どんな助けでも素晴らしいでしょう!前もって感謝します!