eventlisters, не работающий в диспетчере

Я работаю над своим самым первым Прикосновением Sencha 2 проекта, таким образом, я еще не очень знаком с ним. Я использую документацию Sencha и был Googling и Stackoverflowing много, но, может казаться, не нахожу ответ на эту проблему.

Я работаю в MVC и хочу добавить некоторый eventlisteners (в диспетчере) к средствам управления, по моему мнению. Независимо от того, что я пробую, они, кажется, не работают, хотя они работают, когда я добавляю их в самом представлении. Конечно, это не наиболее успешная практика вообще, таким образом, я задаюсь вопросом, что я делаю неправильно?

Это - то, как мой диспетчер смотрит:

Ext.define("workingTime.controller.MainController", {
extend: "Ext.app.Controller",
views: ['Main'],

refs: [
    {
        sl_break: '#sl_break'
    },
    {
        sl_work: '#sl_work'
    }
],

init: function() {
    this.control({
        'sl_break': {
            change: 'setBreakTime'
        }
    });
},

setBreakTime: function(newValue) {
    console.log('set');
}
});

И это - то, как моя точка зрения смотрит (со слушателем, все еще добавленным):

Ext.define("workingTime.view.Main", {
extend: 'Ext.form.Panel',
controllers: ['MainController'],

requires: [
    'Ext.field.Slider'
],

config: {
    fullscreen: true,

    items: [
        {
            xtype: 'label',
            html: '

Take a five minute break

' }, { xtype: 'sliderfield', name: 'sl_break', value: 5, minValue: 1, maxValue: 30, style: { 'background-color' : '#FFecc0' }, listeners: { change: function() { alert('changed'); } } }, { ] } });

Скажите мне, если вам нужно больше информации.

0
nl ja de
судьи должны быть обернуты в объект конфигурации.
добавлено автор Titouan de Bailleul, источник

2 ответы

в вашем диспетчере добавляют sl_break: 'главный sliderfield[itemId=sl_break]' в судьях

Ext.define("workingTime.controller.MainController", {
extend: "Ext.app.Controller",
views: ['Main'],

refs: [
    {
        sl_break: 'main sliderfield[itemId=sl_break]'
    }
],

init: function() {
    this.control({
        'sl_break': {
            change: 'setBreakTime'
        }
    });
},

setBreakTime: function(newValue) {
    console.log('set');
}
});

в поле зрения добавьте псевдоним к главному и itemId к sliderfield

    Ext.define("workingTime.view.Main", {
    extend: 'Ext.form.Panel',
    controllers: ['MainController'],
    alias: 'widget.main',
    requires: [
        'Ext.field.Slider'
    ],

    config: {
        fullscreen: true,

        items: [
            {
                xtype: 'label',
                html: '

Take a five minute break

' }, { xtype: 'sliderfield', name: 'sl_break', itemId:'sl_break', value: 5, minValue: 1, maxValue: 30, style: { 'background-color' : '#FFecc0' }, listeners: { change: function() { alert('changed'); } } }, { ] } });

я надеюсь, что это будет работать

0
добавлено

Я попробовал бы: (без функции init)

config: {
    refs: {
        sl_break: '#sl_break',
        sl_work: '#sl_work'
    },

    control: {
        sl_break: {
            change: 'setBreakTime'
        }
    }
},
0
добавлено
Можно также посмотреть на: stackoverflow.com/questions/14029292/…
добавлено автор Michael, источник
doesn' t, кажется, работают... Возможно, я должен попытаться получить доступ к ползунку посредством действия вместо id?
добавлено автор silvdb, источник