Сенча Сенсорная кнопка переключения

Как вы могли бы выполнить какое-то действие при нажатии кнопки-переключателя, например:

{
    xtype: 'togglefield',
    name: 'enableSnd',
    label: 'Sound',
    value : 1    
}

?


person headkit    schedule 26.04.2011    source источник


Ответы (3)


Вот пример, который я сейчас использую в своем приложении. Я использую функцию «beforechange» для проверки и проверки некоторых данных, прежде чем выполнять реальное действие в «change».

{
    xtype: 'togglefield',
    name: 'toggleName',
    label: 'My Toggle Field',
    listeners: {
        beforechange: function (slider, thumb, newValue, oldValue) {
            if (oldValue == 0 && newValue == 1) {
                // Changing from off to on...validate something?
            }
        },
        change: function (slider, thumb, newValue, oldValue) {
            if (oldValue == 0 && newValue == 1) {
                // Changing from off to on...do something?
            }
            else if (oldValue == 1 && newValue == 0)
                // Changing from on to off...do something?
        }
    }
}
person robertmiles3    schedule 15.06.2011
comment
Привет, Роберт, спасибо за ответ, я просто бродил, почему ты проверял как старые, так и новые значения при изменении? - person Jason Rogers; 17.01.2012
comment
@JasonRogers Просто потому, что я параноик и хочу убедиться, что значение меняет то, что я предполагаю. :) - person robertmiles3; 26.01.2012
comment
по какой-то причине моя функция получает параметры в другом порядке: function (slider, newValue, oldValue, thumb) { - person user379468; 09.12.2013

Взгляните на официальную документацию в сенче:

Для простой кнопки:

    var playPauseButton = new Ext.Button({
    ui: 'small',
    text: 'Play',
    listeners: {
      tap: function() {
      Ext.Ajax.request({
        url: '/api/pause',
        success: updateStatus,
        failure: updateStatus });
      }
    }
    });

Для переключателя событие кажется быть dragend...

person Oct    schedule 26.04.2011
comment
хм, все еще не работает. пробовал включить, отключить, dregend... единственный слушатель, который действительно слушает, это изменение. но этот также срабатывает при инициализации. хм... - person headkit; 27.04.2011

Я использую следующий код, чтобы установить начальное значение для переключаемого поля и реагировать на изменения переключаемого поля.

Сначала я отключаю поле переключения, а затем использую (неожиданное) поведение, когда Sencha Touch запускает событие изменения для этого поля переключения при его инициализации, чтобы включить поле переключения.

Обратите внимание, что это должно работать как для true, так и для false в качестве начальных значений. Если вы хотите изначально отключить поле переключения, вам придется удалить часть else.

{
    xtype: 'togglefield',
    title: 'LightSwitch',
    label: 'Switch Lights',
    value: false,                        // initial value
    listeners: {
        change: function(slider, thumb, newValue, oldValue) {
            if (this.isDisabled() == false) {   // isEnabled
                alert('change Togglefield Event triggered');   // do something
            }
            else {
                this.enable();                                 // enable togglefield  
            }
        }
    },
    disabled: true,                                           
}
person Michael Hilbert    schedule 14.01.2012