0

私は非常に最初の Sencha Touch 2 プロジェクトに取り組んでいるので、まだあまり慣れていません。私は Sencha のドキュメントを使用しており、Google や Stackoverflow を何度も使用していますが、この問題に対する答えが見つからないようです。

私は MVC で作業しており、ビューのコントロールにいくつかのイベント リスナー (コントローラー内) を追加したいと考えています。ビュー自体に追加すると機能しますが、何を試しても機能しないようです。もちろん、それはベストプラクティスではないので、何が間違っているのでしょうか?

これが私のコントローラーの外観です。

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: '<p class="label_field">Take a <span>five</span> minute break<p>'
        },
        {
            xtype: 'sliderfield',
            name: 'sl_break',
            value: 5,
            minValue: 1,
            maxValue: 30,
            style: {
                'background-color' : '#FFecc0'
            },
            listeners: {
                change: function() {
                    alert('changed');
                }
            }
        },
        {

    ]
}
});

さらに情報が必要な場合は教えてください。

4

2 に答える 2

0

私は試してみます:(初期化関数なしで)

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

    control: {
        sl_break: {
            change: 'setBreakTime'
        }
    }
},
于 2012-12-28T13:29:34.933 に答える
0

コントローラに参照を追加sl_break: 'main 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');
}
});

ビューaliasでメインとitemId スライダーフィールドに追加

    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: '<p class="label_field">Take a <span>five</span> minute break<p>'
            },
            {
                xtype: 'sliderfield',
                name: 'sl_break',
itemId:'sl_break',
                value: 5,
                minValue: 1,
                maxValue: 30,
                style: {
                    'background-color' : '#FFecc0'
                },
                listeners: {
                    change: function() {
                        alert('changed');
                    }
                }
            },
            {

        ]
    }
    });

私はそれがうまくいくことを願っています

于 2012-12-28T13:33:34.527 に答える