0

すべての選択フィールドに奇妙な問題があります。コントローラーで変更イベントリスナーが定義された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 とブラウザでテスト済み。

どんな助けでも素晴らしいでしょう!前もって感謝します!

4

2 に答える 2

1

実行時に定義およびインスタンス化されたビューを使用していたため、同じ問題がありました。1 回目は問題ありませんでしたが、2 回目はコントローラーがリスナーを失っていました。

domサブクエリを使用するだけで問題を解決しました。

config: { refs: { RecordTypeSelectField : ' NewRecordPanel #recordTypeSelectField'

基本的に、親コンテナーをクエリ キーに追加するだけです。それで全部です!

于 2013-01-19T10:56:13.097 に答える
0

バグを見つけました。私はidを使用していましたが、itemIdの方が優れています。これが私がこれを理解するのを助けた答えです

id:'myid'

に置き換え

itemId:'myid'

正しい要素を再度取得するためにいくつかのコードを変更する必要がありましたが、現在は機能しています

于 2012-11-03T15:35:57.943 に答える