1

私は Ext.picker.Date を使用しており、非表示イベントで実行するいくつかのチェックがあります。ただし、特定の基準が満たされている場合は、プロセスを停止して、日付ピッカーを非表示にしないようにしたいと考えています。

beforehide イベントを使用してコードを実行しようとしましたが、そのイベントが発生していないようです。

以下は、私の日付ピッカーの構成です。条件が true の場合、ピッカーが隠れないようにするにはどうすればよいですか?

助けてくれてありがとう。

var datePicker = new Ext.picker.Date({
        docked: "bottom",
        listeners: {
            beforehide: function() {
                console.log("before hide");
            },
            hide: function() {
                if (1 == 1) {
                    //how do I stop the picker from hiding?
                    Ext.Msg.alert("You cannot select that date.");                        
                }

            }
        },
        slotOrder: ["day", "month", "year"],
        useTitles: false
    });
    this.add(datePicker);
4

1 に答える 1

0

Sencha Touch 2 をお使いですか?Ext.picker.Date を使用しているので、私はそう仮定します。

ドキュメントによると、日付ピッカーは beforehide イベントを発生させません: Sencha Docs

ここで本当にやりたいことは、「完了」がタップされた後、ピッカーが非表示になる前にロジックを挿入することです。ピッカーは onDoneButtonTap を内部的に呼び出します。次のように独自のロジックを挿入できます。

Ext.define('MyApp.widget.DatePicker', {
    extend: 'Ext.picker.Date',
    xtype: 'mypicker',

    onDoneButtonTap: function() {
        if (1 == 1) {
            Ext.Msg.alert("You cannot select that date.");
        } else {
            Ext.picker.Date.prototype.onDoneButtonTap.call(this);
        }
    }
});

this.add({
    xtype     : 'mypicker',
    docked    : "bottom",
    slotOrder : ["day", "month", "year"],
    useTitles : false
});

これは、ロジックが日付ピッカーの範囲内で必要なものにアクセスできることを前提としています。そうでない場合は、作成時に日付ピッカーに追加の構成を渡すことができます...おそらくacceptedDateRange {...}のようなものです

最も簡単な方法は次のとおりです。

var datePicker = new Ext.picker.Date({
    docked: "bottom",
    slotOrder: ["day", "month", "year"],
    useTitles: false,
    onDoneButtonTap: function() {
        if (1 == 1) {
            Ext.Msg.alert("You cannot select that date.");
        } else {
            Ext.picker.Date.prototype.onDoneButtonTap.call(this);
        }
    }
});

this.add(datePicker);

最初の例のように独自のクラスを定義することが、特に既存のフレームワーク コードにロジックを挿入する状況や、複数の場所でコンポーネントを使用する場合に適していると思います。しかし、2 番目の例も同様に機能します。

于 2012-07-31T12:05:29.047 に答える